Implementación de Algoritmos Fundamentales en C++: Sumatorias y Factorización
Clasificado en Matemáticas
Escrito el en
español con un tamaño de 5,12 KB
Ejercicios de Implementación de Algoritmos Fundamentales
A continuación, se presentan las correcciones y optimizaciones de varios fragmentos de código, enfocados en la implementación de series matemáticas y otras operaciones básicas en programación.
Series y Sumatorias
Ejercicio 7: Suma de los primeros $n$ enteros positivos
Programa que calcula el valor de la serie: $1 + 2 + 3 + \dots + n$.
int n, suma = 0;
cout << "Digite el total de números a sumar: ";
cin >> n;
for (int i = 1; i <= n; i++) {
suma += i;
}
// cout << "La suma es: " << suma << endl; // Opcional: mostrar el resultado
system("pause");
Ejercicio 8: Suma de los primeros $n$ números impares
Programa que calcula el valor de la serie: $1 + 3 + 5 + \dots + (2n-1)$.
int n, suma = 0;
cout << "Digite la cantidad de elementos que desea sumar: ";
cin >> n;
// El último término es 2*n - 1. El bucle debe iterar sobre los términos impares.
for (int i = 1; i <= 2 * n - 1; i += 2) {
suma += i;
}
// cout << "La suma es: " << suma << endl; // Opcional: mostrar el resultado
system("pause");
Ejercicio 10: Suma de factoriales
Programa que calcula el valor de la serie: $1! + 2! + 3! + \dots + n!$ (Suma de factoriales).
int n, suma = 0, factorial = 1;
cout << "Digite el total de los elementos a sumar: ";
cin >> n;
for (int i = 1; i <= n; i++) {
factorial *= i; // Calcula el factorial actual (i!)
suma += factorial; // Acumula la suma
}
cout << "\nLa suma de factoriales es: " << suma << endl;
system("pause");
Ejercicio 11: Suma de potencias de 2
Programa que calcula el valor de la serie: $2^1 + 2^2 + 2^3 + \dots + 2^n$.
Nota: Se asume que se incluye la librería necesaria para la función pow() (ej. <cmath>).
#include <cmath>
// ... otras declaraciones
int n, suma = 0, elevacion = 0;
cout << "Digite el numero de términos a sumar: ";
cin >> n;
for (int i = 1; i <= n; i++) {
elevacion = pow(2, i);
suma += elevacion;
}
cout << "\nLa suma es: " << suma << endl;
system("pause");
Ejercicio 12: Serie alternada de suma y resta
Programa que calcula el resultado de la expresión: $1 - 2 + 3 - 4 + 5 - 6 \dots n$.
Corrección: Se simplifica la lógica para manejar la suma/resta directamente en el bucle.
int n, suma = 0;
cout << "Digite el numero de elementos: ";
cin >> n;
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) {
// Si es par, se resta
suma -= i;
} else {
// Si es impar, se suma
suma += i;
}
}
cout << "\nLa suma es: " << suma << endl;
system("pause");
Factorización y Lógica Condicional
Ejercicio 16: Descomposición en factores primos
Programa que calcula la descomposición en factores primos de un número entero.
int numero;
cout << "Digite un numero: ";
cin >> numero;
cout << "\nDescomponiendo en factores primos: ";
// Manejo del factor 2
while (numero % 2 == 0) {
cout << 2 << " ";
numero /= 2;
}
// Manejo de factores impares a partir de 3
for (int i = 3; i * i <= numero; i += 2) { // Optimización: solo hasta la raíz cuadrada
while (numero % i == 0) {
cout << i << " ";
numero /= i;
}
}
// Si el número restante es mayor que 2, es un factor primo
if (numero > 2) {
cout << numero << " ";
}
cout << "\n";
system("pause");
Ejercicio 1 (Lógica Condicional Simple)
Verificación si un número introducido por el usuario es mayor que 5.
int n;
cout << "Introduce un numero: ";
cin >> n;
if (n > 5) {
cout << "El numero es mayor que 5";
} else {
cout << "El numero es menor o igual que 5";
}
// Falta system("pause") o manejo de fin de programa
Ejercicio 2 (Uso de Switch para Múltiplos)
Programa que pide dos números ($n_1, n_2$) y verifica si el resto de dividir el primero entre el segundo es cero.
Corrección: El uso de switch con el resultado de un módulo es ineficiente y limitado. Se recomienda usar if/else para esta verificación, aunque se mantiene la estructura solicitada con correcciones sintácticas.
int n1, n2;
cout << "Introduce dos números (n1 y n2): ";
cin >> n1 >> n2;
// Se recomienda usar if/else para verificar el resto
if (n2 != 0) { // Evitar división por cero
switch (n1 % n2) {
case 0:
cout << "El primer numero es múltiplo del segundo (resto cero).";
break;
default:
cout << "El resto de la división no es cero.";
break;
}
} else {
cout << "Error: División por cero no permitida.";
}
// case1: break; fue eliminado por ser innecesario en este contexto.