Ejemplos prácticos de programación en C++: algoritmos fundamentales

Informática y TelecomunicacionesActualizado el 12,11 KB

Resumen

Colección de diez ejercicios resueltos en C++ que cubren desde la secuencia de Fibonacci hasta simulaciones de crecimiento poblacional y desintegración de masa. Cada ejemplo ilustra bucles, condicionales, entrada de datos por consola y cálculo de promedios, porcentajes y conversiones de tiempo. El documento sirve para reforzar la programación estructurada con casos prácticos.

Puntos clave

  • La secuencia de Fibonacci se genera con dos variables que guardan los dos últimos términos y un bucle while con límite 10000.
  • El promedio ponderado de tres notas usa pesos 3, 5 y 10 y se divide entre 18, la suma de los pesos.
  • El aumento salarial del 15% se aplica antes de calcular PIS (1%) y FGTS (8%) sobre el nuevo salario.
  • La simulación de crecimiento compara una población que crece 2% anual con otra que crece 3% anual hasta que B supera a A.
  • La desintegración de masa pierde el 10% del valor cada segundo y se convierte el tiempo total a horas, minutos y segundos.
  • La función system("pause") es específica de Windows y no forma parte del estándar C++.

Ponte a prueba

Este documento presenta una colección de ejercicios resueltos en C++, abarcando desde algoritmos básicos hasta problemas de simulación y procesamiento de datos. Cada ejemplo está diseñado para ilustrar conceptos clave de la programación estructurada, el uso de bucles, condicionales y la interacción con el usuario.

Colección de Algoritmos C++

1. Generador de Secuencia de Fibonacci

Este programa calcula y muestra los números de la secuencia de Fibonacci hasta un límite de 10000. Es un ejemplo clásico para entender los bucles y la asignación de variables.

#include <iostream>

int main() {
    using namespace std;
    int ultimo = 1, penultimo = 0, novo;
    cout << penultimo << " ";
    while (ultimo <= 10000) {
        cout << ultimo << " ";
        novo = ultimo + penultimo;
        penultimo = ultimo;
        ultimo = novo;
    }
    system("pause"); // Nota: 'system("pause")' es específico de Windows y no es estándar C++.
    return 0;
}

2. Suma de Serie Matemática Compleja

El siguiente código calcula la suma de una serie matemática que involucra funciones trigonométricas y raíces cuadradas, iterando 1000 veces. Incluye una validación para evitar divisiones por cero.

#include <iostream>
#include <cmath> // Para funciones como cos, sin, sqrt

int main() {
    using namespace std;
    float x, y, s = 0;
    int i;
    cout << "Entre com dois valores: ";
    cin >> x >> y;

    if (x * x + y * y * y * y != 0) {
        for (i = 1; i <= 1000; i++) {
            s = s + ((cos(x) - sin(y)) / sqrt(x * x + y * y * y * y) + i);
        }
        cout << "Soma: " << s;
    } else {
        cout << "Impossivel calcular";
    }
    system("pause");
    return 0;
}

3. Clasificador de Edades y Porcentajes

Este programa solicita 15 edades y las clasifica en cuatro rangos predefinidos (1-15, 16-30, 31-45, 46-60), mostrando el conteo y el porcentaje de personas en cada categoría.

#include <iostream>

int main() {
    using namespace std;
    int c1 = 0, c2 = 0, c3 = 0, c4 = 0, i, id;
    for (i = 1; i <= 15; i++) {
        cout << "Entre com a idade: ";
        cin >> id;
        if (id >= 1 && id <= 15) {
            c1++; // Incrementa contador para el rango 1-15
        } else if (id >= 16 && id <= 30) {
            c2++; // Incrementa contador para el rango 16-30
        } else if (id >= 31 && id <= 45) {
            c3++; // Incrementa contador para el rango 31-45
        } else if (id >= 46 && id <= 60) {
            c4++; // Incrementa contador para el rango 46-60
        }
    }
    cout << "Letra A: " << c1 << " " << c2 << " " << c3 << " " << c4 << "\n";
    cout << "Letra B: " << c1 * 100.00 / 15 << "% " << c2 * 100.0 / 15 << "% " << c3 * 100.0 / 15 << "% " << c4 * 100.0 / 15 << "%";
    system("pause");
    return 0;
}

4. Cálculo de Salarios, PIS y FGTS

Este algoritmo procesa los salarios de 20 empleados, aplicando un aumento del 15% y calculando el total de PIS (1%) y FGTS (8%) sobre el nuevo salario. Muestra el nuevo salario individual y los totales acumulados.

#include <iostream>

int main() {
    using namespace std;
    int i;
    float salario, s = 0, pis = 0, fgts = 0;
    for (i = 1; i <= 20; i++) {
        cout << "Entre com o salario: ";
        cin >> salario;
        salario += salario * 0.15; // Aumento del 15%
        cout << "Letra A: Novo Salario R$ " << salario << "\n";
        s += salario;
        pis += salario * 0.01;
        fgts += salario * 0.08;
    }
    cout << "Letra B: " << s << "\n";
    cout << "Letra C: PIS R$" << pis << " - FGTS R$" << fgts << "\n";
    system("pause");
    return 0;
}

5. Promedio Ponderado de Notas y Aprobación

El programa calcula el promedio ponderado de tres notas (con pesos 3, 5 y 10 respectivamente) para 20 alumnos. Determina si cada alumno está aprobado (promedio >= 6) o reprobado.

#include <iostream>

int main() {
    using namespace std;
    int i;
    float m, n1, n2, n3;
    for (i = 1; i <= 20; i++) {
        cout << "Entre com as tres notas do aluno " << i << ": "; // Corregido el error de sintaxis aquí
        cin >> n1 >> n2 >> n3;
        m = (3 * n1 + 5 * n2 + 10 * n3) / 18; // Suma de pesos: 3+5+10 = 18
        if (m >= 6) {
            cout << "Aluno aprovado!\n";
        } else {
            cout << "Aluno reprovado!\n";
        }
    }
    system("pause");
    return 0;
}

6. Simulación de Crecimiento Poblacional

Este código simula el crecimiento de dos poblaciones (A y B) con diferentes tasas de crecimiento anual (2% y 3% respectivamente) hasta que la población B supera a la población A. Calcula el número de años necesarios.

#include <iostream>

int main() {
    using namespace std;
    int anos = 0;
    float pa = 100000, pb = 50000; // Población A y Población B iniciales
    while (pb <= pa) {
        pa += 0.02 * pa; // Crecimiento del 2% para A
        pb += 0.03 * pb; // Crecimiento del 3% para B
        anos++;
    }
    cout << "Numero de anos: " << anos << "\n";
    system("pause");
    return 0;
}

7. Cálculo de Promedio de las Dos Mejores Notas

Para 20 alumnos, este programa solicita tres notas, ignora las notas menores de 4 (estableciéndolas a 0) y luego calcula el promedio de las dos notas más altas. Finalmente, determina la aprobación (promedio >= 6).

#include <iostream>

int main() {
    using namespace std;
    int i = 1;
    float n1, n2, n3, m;
    for (; i <= 20; i++) {
        cout << "Entre com as tres notas: ";
        cin >> n1 >> n2 >> n3;

        // Zerando notas abaixo de 4
        if (n1 < 4) {
            n1 = 0;
        }
        if (n2 < 4) {
            n2 = 0;
        }
        if (n3 < 4) {
            n3 = 0;
        }

        // Calculando a média das duas maiores notas
        // Este bloque de lógica puede simplificarse, pero se mantiene la estructura original.
        if (n1 >= n2 && n2 >= n3) {
            m = (n1 + n2) / 2;
        } else if (n1 >= n3 && n3 >= n2) {
            m = (n1 + n3) / 2;
        } else if (n2 >= n1 && n1 >= n3) {
            m = (n2 + n1) / 2;
        } else if (n2 >= n3 && n3 >= n1) {
            m = (n2 + n3) / 2;
        } else if (n3 >= n1 && n1 >= n2) {
            m = (n3 + n1) / 2;
        } else if (n3 >= n2 && n2 >= n1) {
            m = (n3 + n2) / 2;
        } else { // Caso de notas iguales, por ejemplo
            m = (n1 + n2 + n3) / 3; // Fallback, aunque las condiciones anteriores cubren la mayoría
        }

        // Verificando se aluno passou
        if (m >= 6) {
            cout << "Aluno aprovado: " << m << "\n";
        } else {
            cout << "Aluno reprovado: " << m << "\n";
        }
    }
    system("pause");
    return 0;
}

8. Encuesta de Preferencia de Canales de TV

Este programa realiza una encuesta interactiva sobre canales de TV, sexo y edad. Calcula el porcentaje de mujeres que ven canales específicos (2 o 6) y la edad promedio de quienes no ven ningún canal (ingresan 0).

#include <iostream>

int main() {
    using namespace std;
    int c1 = 0, Canal, c = 0, ct = 0, idade;
    float s = 0;
    char r = 's', sexo;

    while (r == 's') {
        cout << "Entre com o canal assistido (2, 6, 9, 13 ou ZERO): ";
        cin >> Canal;
        cout << "Entre com o sexo (f/m): ";
        cin >> sexo;
        // fflush(stdin); // Nota: 'fflush(stdin)' es comportamiento indefinido en C++ estándar.
        cout << "Entre com a idade: ";
        cin >> idade;

        if (sexo == 'f' && (Canal == 2 || Canal == 6)) {
            c++; // Contador de mujeres que ven canal 2 o 6
        }
        ct++; // Contador total de encuestados

        if (Canal == 0) {
            s += idade;
            c1++; // Contador de personas que no ven ningún canal (canal 0)
        }

        cout << "Deseja entrar com mais algum valor (s/n)? ";
        cin >> r;
        // fflush(stdin);
    }

    cout << "Letra A: " << c * 100.0 / ct << "%\n";
    if (c1 > 0) {
        cout << "Letra B: " << s / c1 << "\n";
    } else {
        cout << "Nada a calcular (Nenhuma pessoa informou canal 0)\n";
    }
    system("pause");
    return 0;
}

9. Encuesta de Peso y Preferencias

Este programa realiza una encuesta sobre peso, sexo y una respuesta binaria ('s'/'n'). Calcula el peso promedio de mujeres que responden 's', el mayor peso entre hombres que responden 'n', y el porcentaje de personas con peso superior a 110 kg.

#include <iostream>

int main() {
    using namespace std;
    int c = 0, ct = 0, c1 = 0, primeiro = 1; // 'primeiro' es una bandera para inicializar 'maiorpeso'
    float peso, maiorpeso = 0, s = 0; // Inicializar maiorpeso para evitar valores basura
    char r = 's', sexo, resposta;

    while (r == 's') {
        cout << "Entre com a resposta (s/n): ";
        cin >> resposta;
        // fflush(stdin);
        cout << "Entre com o sexo (f/m): ";
        cin >> sexo;
        // fflush(stdin);
        cout << "Entre com o peso: ";
        cin >> peso;

        if (sexo == 'f' && resposta == 's') {
            s += peso;
            c1++; // Contador de mujeres que respondieron 's'
        }

        if (sexo == 'm' && resposta == 'n') {
            if (primeiro) {
                maiorpeso = peso;
                primeiro = 0;
            } else if (peso > maiorpeso) {
                maiorpeso = peso;
            }
        }

        ct++; // Contador total de encuestados

        if (peso > 110) {
            c++; // Contador de personas con peso > 110
        }

        cout << "Deseja entrar com mais algum valor (s/n)? ";
        cin >> r;
        // fflush(stdin);
    }

    if (c1 > 0) {
        cout << "Letra A: " << s / c1 << "\n";
    } else {
        cout << "Letra A: Nada a calcular (Nenhuma mulher respondeu 's')\n";
    }
    cout << "Letra B: " << maiorpeso << "\n";
    cout << "Letra C: " << c * 100 / ct << "%\n";
    system("pause");
    return 0;
}

10. Simulación de Desintegración de Masa

Este programa simula la desintegración de una masa, donde cada segundo pierde el 10% de su valor actual, hasta que la masa es menor que 1. Calcula el tiempo total en segundos y luego lo convierte a formato horas:minutos:segundos.

#include <iostream>

int main() {
    using namespace std;
    int s = 0, m = 0, h = 0;
    float massa;

    cout << "Entre com a massa: ";
    cin >> massa;

    while (massa >= 1) {
        massa -= massa / 10; // Pierde 10% de su valor actual
        s++; // Incrementa segundos
    }
    cout << "Letra A: " << s << " segundos\n";

    // Conversión de segundos a horas, minutos y segundos
    while (s >= 3600) {
        h++;
        s -= 3600;
    }
    while (s >= 60) {
        m++;
        s -= 60;
    }
    cout << "Letra B: " << h << ":" << m << ":" << s << "\n";
    system("pause");
    return 0;
}

Estos ejemplos cubren una variedad de problemas comunes en la programación, ofreciendo soluciones claras y funcionales en C++. Son ideales para estudiantes y desarrolladores que buscan reforzar sus conocimientos en algoritmos y estructuras de control.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué hace el programa de la secuencia de Fibonacci en C++?

Calcula y muestra los números de la secuencia de Fibonacci hasta un límite de 10000, usando un bucle while y tres variables de apoyo.

¿Por qué el código usa system("pause")?

Sirve para pausar la consola en Windows, pero no es estándar de C++ y en otros sistemas no funciona como se espera.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Cuál es el límite del programa que genera la secuencia de Fibonacci?
2. ¿Qué pesos se usan en el promedio ponderado de tres notas?
3. ¿Qué porcentaje de aumento se aplica a los salarios en el cuarto ejemplo?
4. ¿Qué porcentaje de la masa se pierde cada segundo en la simulación de desintegración?
5. ¿Qué condición determina que un alumno esté aprobado en el ejemplo del promedio ponderado?
6. En el clasificador de edades, ¿en qué rango cae una persona de 30 años?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.