Saludos tengo el siguiente programa que me calcula e imprime la siguiente serie:
a) 1/1+1/2+1/3......1/n n seria el numero que el usuario le de
pero no me imprime el calculo correcto y no se por qué
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
float suma=0;
printf("Dame el numero de terminos\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
suma= suma+1/i;
printf("a) %.2f",suma);
return 0;
}
de antemano gracias
En lugar de float usa double...
Dulces Lunas!¡.
El error es bastante simple solo debes cambiar los int por float ya que c tiene problemas cuando combinas los tipos de datos. saludos
#include <stdio.h>
#include <stdlib.h>
int main(){
float suma=0,n,i;
printf("Dame el numero de terminos\n");
scanf("%f",&n);
for(i=1;i<=n;i++)
suma=suma+1/i;
printf("%.2f",suma);
return 0;
}
El unico detalle es solo usar casting float en la division 1/i (pues i es entero).
Y con eso si que va de padre.
twins: No es nada recomendable usar comparacion de punto flotante :silbar:
Hola! el problema es que estas haciendo una division de enteros: i y 1 son enteros por lo tanto la division va a dar un entero. Podes hacer lo que te dijeron(trabajar todo con float o double) ó indicar que 1 es un float, ¿como?
suma= suma+1.0/i; // fijate q use 1.0
o directamente castear la division:
suma= suma+(float)1/i;
Saludos