Ejemplos Prácticos de Programación C++: Algoritmos Fundamentales
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 12,11 KB
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.