Programa en lenguaje C

Estoy estudiando lenguaje de programación C, el problema es que voy demasiado lento ya que me cuesta un poco no se porque, el caso es que nos han encomendado una tarea para entregar, se que esta mal decirlo, pero agradecería mucho que me ayudases para poder hacer el siguiente progrmama:
Debo realizar un programa que clacule el valor de ES para un numero real POR, utilizando la siguiente serie:
S=1+X+(X^2 / 2! )+ (X^3 / 3!)+ (X^4/ 4!) ....
Aclaracion del parentesis (es qu no se como poner fracciones): X elevado a 2 dividido entre dos factorial, y asi sucesivamente.
El problema tiene una aclaración final que complica un cpoco la cosa y dice así:
El valor de ES se calculara hasta que un termino concreto (x^a / a! ) Sea menor que 0.0001.La fórmula sirve para calcular el valor de la exponencial de X: s- exp(X) - e^x.
Muestre por pantalla el valor que devuelve la función exp () de la librería math. H pasándole X como argumento para comparar ambas ambos valores.
Le agradecería mucho su ayuda, he empezado a estudiar pero todavía no he llegado a este nivel. El compilador que utilizo es el DEV-C++ O EL code::blocks
Respuesta
1
//De acuerdo, la cosa es sencilla. Para elevar un numero a una potencia tenemos que hacer uso de una función que se encuentra en la librería math. H por tanto:
#include <math.h>
#include <stdio.h>
#include <conio.h>
//Definiremos una funcion para hacer el factorial de un numero:
float factorial (int num) {
  if (num==0)
    return 1;
  else
    return num * factorial(num-1);
}
//Esta función utiliza una cosa que se llama recursividad (se hace una llamada a sí misma dentro de la función)
int i=0;
float X, S=0, termino=1;
//La variable i la usaremos para el bucle
//X sera para pedir un numero
//S sera donde almacenemos el resultado
//termino sera el valor del utimo termino de la serie calculado
int main(){
  clrscr();
  printf("Introduce un numero: ");
  scanf("%f",&X);//Pedimos un numero
  //Usaremos un bucle par hacer la serie:
  while(termino>=0.0001){
    termino=pow(X,i)/factorial(i);
    S+= termino;
    i++;
  }
  printf("\nEl resultado con exp(%f) es = %f",X,exp(X));
  printf("\nEl resultado obtenido sumando la serie es: %f",S);
  getch();
  return 0;
}
//He probado el código y funciona en Turbo C++ si usas Dev-C seguramente te de problemas con la librería conio. H asique tendrás que usar la equivalente que no sé cual es.

3 respuestas más de otros expertos

Respuesta
1
Intenta crear 2 métodos:
int potencia(int x, int n)
{
 if (n == 0) return 1;
  int result = 1;
  for (int i=0; i < n ; i++)
     result *= x;   
return result;
}
int factorial(int n)
{
 int result = 1;
for (int i=2; i <=n; i++)
result *= i;
return result

void main(int x, int n)
{
float result = 1+x;
for (int i=2; i < n ; i++)
result = potencia(x,i)/factorial(i);
return result;
}
Tengo prisa así que te lo pongo tal cual...
Suerte
Respuesta
1
Problema de factoriales e c.. es un clásico busca en google que hay encuentras el código
La verdad es que he buscado, pero no con ese titulo intentare haber si encuentro algo, lo único malo es que lo debo de entregar este día
Huuu pero si lo encuentras buscalo así.. factoriales en c.. no olvides cerrar la respuesta
¿No me podrías dar la solución?, la verdad es que no dispongo de mucho tiempo, lo debo de entregar hoy. Gracias anticipadas
No tampoco tengo tiempo ara hacerte el programa
Cuando digo tiempo, me refiero a que lo debo de entregar al final de esta tarde, no es que no me quiera comer la cabez, soy el primero que quiero aprender y no he pedido ayuda hasta que vi que ya no podía porque se me acaba el tiempo para la entrega que sera dentro de 2 horas.
Solo quería aclarar lo del tiempo ya que me da la impresión de que me entendiste mal, no es que buscar información sea un desperdicio de tiempo todo lo contrario, lo único es que no llegara a esa entrega, de todas maneras estoy buscando por el titulo que me has dado.
Tambien agradeceria culquier ayuda.
Muchas gracias
Ejercicio 21
Escriba el algoritmo para un programa que calcule el factorial de un número n ingresado por el teclado.
Algoritmo
Inicio
Leer c, num, fac
Leer num
Fac:1
Desde c=1 hasta c<=num hacer
fac=fac*c
Fin Desde
Imprimir num, fac
Fin
Variables
Fac : acumulador del valor del factorial del numero ingresado.
C : cuenta el número de repeticiones.
Num : el número cuyo factorial se va ha calcular.
Programa
#include<stdio.h>
main(void)
{int c,num;
float fac;
printf("ingrese el número n para calcular su factorial  ");
scanf("%d",&num);
fac=1;
for(c=1;c<=num;c++)
fac=fac*c;
printf("el factorial de %d es %lf",num,fac);
}
Respuesta
1
Primero el main (la función factorial la creas tu, es un for sencillo, devuelve double):
double s,x,z;
s=1;
z=1;
... <-- Aquí ponle lo que tengas para asignar a x el valor que quieras. (Scanf, Get, ... etc)
while ((pow(x,z)/factorial(z))>=0.0001){
    s=s+(pow(x,z)/factorial(z))
    z++;
}
printf("%lf",s);
Ahora factorial:
double factorial(double p){
double a;
a=1;
while(p>0){
    a=a*p;
    p--;
}
return a;
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas