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.

Entradas relacionadas: