Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: m@o_614 en 29 Junio 2012, 04:58 AM

Título: series en C
Publicado por: m@o_614 en 29 Junio 2012, 04:58 AM
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
Título: Re: series en C
Publicado por: BlackZeroX en 29 Junio 2012, 05:06 AM
En lugar de float usa double...

Dulces Lunas!¡.
Título: Re: series en C
Publicado por: twins en 29 Junio 2012, 05:43 AM
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;
}   
Título: Re: series en C
Publicado por: ryan parker en 29 Junio 2012, 06:52 AM
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:
Título: Re: series en C
Publicado por: durasno en 29 Junio 2012, 06:52 AM
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