Problème avec une variable float en C.

Enuma -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je viens de commencer ma première année en DUT info et j'ai un algorythme a programmer en C.

Saisir N, Calculez les sommes :
S=1+(1/2)+(1/3)+(1/4)+...+(1/N)

Voici le programme que j'ai fait :

#include <stdio.h>
int main() {
int n,x;
float s; /*S=1+(1/2)+(1/3)+(1/4)+.....(1/N)*/
x=1;
s=1;
n=0;
while (n<1) { /*Saisie de N différent de 0*/
printf("Saisir n (différent de 0) : \n");
scanf("%ld",&n);
}
while (x<n) {
x++;
s=s+(float)(1/x);
}
printf("S=%lf\n",s);
return 0;
}

Mon programme m'a l'air correct pourtant une fois que je le lance quelque soit la valeur de N il me sort le résultat S=1.00000000000

J'ai pourtant bien spécifié que S=S+(float)(1/x) ca voudrais dire que le programme ne fait pas ma deuxième boucle ?
Ca va encore être une erreur a la con ^^'

Merci d'avance :)
Configuration: Linux
Firefox 3.0

2 réponses

  1. Utilisateur anonyme
     
    #include <stdio.h>

    int main(void)
    {
    int N;
    int i;
    double s = 0;

    do
    {
    printf("Saisir n (different de 0) : \n");
    scanf("%d",&N);
    }
    while (N<1); /*Saisie de N différent de 0*/

    for (i=1; i<N+1; i++)
    s += 1.0 / (double) i;
    printf("%f", s);
    return 0;
    }
    -1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    pour un float on le lit ou l'imprime avec %f, %lf est pour un double, de même pour un int c'est %d et pour un long %ld.
    -1