series en C

Iniciado por m@o_614, 29 Junio 2012, 04:58 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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

BlackZeroX

En lugar de float usa double...

Dulces Lunas!¡.
The Dark Shadow is my passion.

twins

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;
}   

ryan parker

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:
Your kung-fu is not strong!

durasno

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
Ahorrate una pregunta, lee el man