Problème avec une variable float en C.

Enuma -  
dubcek Messages postés 19032 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 :)

2 réponses

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
dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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