Programas en C: factoriales, potencias y sumatorias con ejemplos resueltos
Programas en C: factoriales, potencias y sumatorias
A continuación se presentan varios programas escritos en lenguaje C que resuelven problemas clásicos de cálculo con factoriales, potencias, sumatorias y promedios. Cada ejemplo incluye su código fuente corregido.
Programa 1: suma de factoriales y suma de potencias
#include<stdio.h>
#include<conio.h>
#include<math.h>
int leer(void);
float facto(int);
float sumfac(int);
float potencia(int);
float sumpow(int);
void main(void)
{
int m;
float sf, pote;
clrscr();
printf("\n\n Hasta que factorial deseas sumar m =");
m = leer();
sf = sumfac(m);
printf("\n La suma de factoriales desde 1 hasta %d es = %.0f", m, sf);
pote = sumpow(m);
printf("\n La suma de la potencia desde 1 hasta %d es = %.0f", m, pote);
getch();
}
int leer(void)
{
int m;
scanf("%d", &m);
return(m);
}
float facto(int n)
{
float f = 1;
int k;
for (k = 1; k <= n; k++)
f = f * k;
return(f);
}
float sumfac(int m)
{
int n;
float fac, s = 0;
printf("\n Numero\t Factorial\t suma de factoriales");
for (n = 1; n <= m; n++)
{
fac = facto(n);
s = s + fac;
printf("\n %d \t %.0f \t\t %.0f", n, fac, s);
}
return(s);
}
float potencia(int n)
{
float f = 1;
int k;
for (k = 1; k <= n; k++)
f = pow(n, k);
return(f);
}
float sumpow(int m)
{
int n;
float pot, s = 0;
printf("\n\n");
printf("\n Numero\t potencia\t suma de potencias");
for (n = 1; n <= m; n++)
{
pot = potencia(n);
s = s + pot;
printf("\n %d \t %.0f \t\t %.0f", n, pot, s);
}
return(s);
}Problema 2.39: comparación de valores R y Q
/* Problema 2.39 */
#include<stdio.h>
#include<conio.h>
#include<math.h>
int leerm(void);
int calcur(int);
int calcuq(int);
void main(void)
{
int m, r, q;
clrscr();
printf("\n\t Da cuantos valores se calculara = ");
m = leerm();
r = calcur(m);
q = calcuq(m);
if (q != r)
{
if (q > r)
printf("\n El valor mayor es Q=%d\tEl valor menor es R=%d", q, r);
else
printf("\n El valor mayor es R=%d\tEl valor menor es Q=%d", r, q);
}
else
printf("\n\tR y Q son iguales\n\n\tR=%d\t\tQ=%d", r, q);
getch();
}
int leerm(void)
{
int M;
scanf("%d", &M);
return(M);
}
int calcur(int a)
{
int f, k;
f = 1;
for (k = 2; k <= a; k++)
f = f * k;
return(f);
}
int calcuq(int b)
{
int p, pot;
for (p = 2; p <= b; p++)
pot = pow(p, p);
return(pot);
}Programa 35: suma ponderada de factoriales
/* Programa 35 */
#include<stdio.h>
#include<conio.h>
int leer(void);
int calcus(int);
int calcur(int);
void main(void)
{
int m, s;
clrscr();
printf("\nDa el valor de M = ");
m = leer();
s = calcus(m);
printf("\nLa suma total es\n\nS = %d", s);
getch();
}
int leer(void)
{
int M;
scanf("%d", &M);
return(M);
}
int calcus(int m)
{
int n, s, i, r;
printf("\nDa el valor de N = ");
n = leer();
s = 0;
for (i = 1; i <= n; i++)
{
r = calcur(n);
s = s + i * r;
}
return(s);
}
int calcur(int n)
{
int j, r;
r = 1;
for (j = 1; j <= n; j++)
r = r * j;
return(r);
}Programa 2: cálculo de potencias con intervalo
/* Programa 2 */
#include<stdio.h>
#include<conio.h>
#include<math.h>
void desmadre(int, int);
void main(void)
{
int m, x;
clrscr();
printf("\nDa el valor de M = ");
scanf("%d", &m);
printf("\nDa el valor de X = ");
scanf("%d", &x);
if (x >= -3 && x <= 3)
desmadre(m, x);
else
printf("\nX = %d\nEl valor de x no corresponde al intervalo [-3,3]", x);
getch();
}
void desmadre(int m, int x)
{
int p, i, j, r;
p = 1;
for (i = 1; i <= m; i++)
{
for (j = -3; j <= x; j++)
{
r = pow(j, i);
p = p * r;
}
}
printf("\nEl valor de P = %d", p);
}Programa 8: menú con tabla y funciones matemáticas
/* Programa 8 */
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
void menu(void);
int leer(void);
void calcugf(float);
char leerop(void);
void main(void)
{
clrscr();
menu();
getch();
}
int leer(void)
{
int n;
scanf("%d", &n);
return(n);
}
char leerop(void)
{
char op;
scanf(" %c", &op);
return(op);
}
void menu(void)
{
char opcion;
int n, j;
float s = 0, t, a, b, i, fx, x;
printf("\n\n\t Escoge una opcion");
printf("\n\n\t (a) tabla con los valores I\ta\bs");
printf("\n\n\t (b) programa para calcular expresion f(x) y g(x)");
printf("\n\t");
opcion = leerop();
switch (toupper(opcion))
{
case 'A':
printf("\n\t Da el valor de n = ");
scanf("%d", &n);
printf("\n\t i\t a\t b\t s");
a = 10;
b = 9;
for (j = 1; j <= n; j++)
{
for (i = 1; i <= n; i++)
{
t = (a - b) / j;
}
s = s + t;
printf("\n\n\t %.0f\t %.0f\t %.0f\t %.2f", i, a, b, s);
a++;
b--;
}
break;
case 'B':
printf("\n\n\tDa el valor de x = ");
scanf("%f", &x);
if (x < 0)
{
fx = x * x + (x - 1);
printf("\n\n\tValor de fx= %.2f", fx);
calcugf(fx);
}
else
{
fx = x + cos(x);
printf("\n\n\tValor de fx= %.2f", fx);
calcugf(fx);
}
break;
}
}
void calcugf(float fx)
{
float gf;
if (fx <= -3)
{
gf = fx * fx + sin(fx);
printf("\n\n\tEl valor de gf = %.2f", gf);
}
else
{
gf = exp(fx + fx) + 1;
printf("\n\n\tEl valor de gf = %.2f", gf);
}
}Programa 21: promedio y productos aceptados o rechazados
/* Programa 21 */
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
void menu(void);
char leer(void);
int leern(void);
void prom(int);
void main(void)
{
clrscr();
printf("\n\n\t Seleccione una opcion");
printf("\n\t (a) promedio de n cantidades");
printf("\n\t (b) productos aceptados y rechazados");
printf("\n\t\t");
menu();
getch();
}
void menu(void)
{
float mon, mont = 0;
int n, N, i, cal, m, h = 0, l = 0;
char op;
op = leer();
switch (toupper(op))
{
case 'A':
printf("\n\t Introduce la cantidad de numeros que vas a ingresar n = ");
printf("\n\n\t\t");
n = leern();
prom(n);
break;
case 'B':
printf("\n\t Indica la cantidad de productos que vas a ingresar N = ");
N = leern();
for (i = 1; i <= N; i++)
{
printf("\n\n\tIntroduzca la calidad del producto cal = ");
scanf("%d", &cal);
if (cal > 75)
{
mon = cal * 5000 / 100;
mont = mont + mon;
printf("\n\n\tEl monto es de %.2f", mon);
h++;
}
else
{
l = l + 1;
printf("\n\tArticulo no valido para venta");
}
printf("\n\n\tMonto total es = %.2f de %d articulos aceptados", mont, h);
printf("\n\n\tLa cantidad de productos rechazados = %d", l);
}
break;
default:
printf("\n\n Opcion no valida");
getch();
}
}
char leer(void)
{
char op;
scanf(" %c", &op);
return(op);
}
int leern(void)
{
int n;
scanf("%d", &n);
return(n);
}
void prom(int n)
{
float can, p, pro;
int i;
p = 0;
printf("\n\n\tIntroduzca las cantidades");
for (i = 1; i <= n; i++)
{
printf("\n\t");
scanf("%f", &can);
p = p + can;
}
pro = p / n;
printf("\n\n\tEl promedio de las cantidades ingresadas = %.2f", pro);
}Conclusiones
Estos programas muestran el uso de funciones, ciclos for, estructuras condicionales y menús con switch en C, aplicados al cálculo de factoriales, potencias, sumatorias y promedios. Revisar y comprender cada uno fortalece las bases de la programación estructurada.