Programas en C: factoriales, potencias y sumatorias con ejemplos resueltos

Informática8,62 KB

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.

Descargar

PDF Word HTML