Pk ce programme ne fonctionne pas ?langage C

unmec13 -  
 unmec13 -
Bonjour,

Je voudrai bien savoir pourquoi ce programme ne marche pas et bloque lorsque je le lance :


# include <stdio.h>

int main()
{
float s,x,varret;

s=0;
varret=10;

while(x!=varret){
printf("Rentrez une valeur a additionner");
scanf("%f",x);
s=s+x;
}
printf("Le résultat est : %f",s);

return;
}




Mon but étant de créer un programme qui additionne tous les chiffres que l'on rentre jusqu'à une certaine valeur et dans mon cas c'est 10

4 réponses

Gord21 Messages postés 918 Date d'inscription   Statut Membre Dernière intervention   289
 
Bonsoir,
Je pense qu'il s'agit du return :
return 0;


@+
0
unmec13
 
bonsoir Gord...non j'ai essayé ce n'est pas ça

Quand je lance ce programme j'ai un message :

"un programme a fait que le programme a cessé..."

Ca ma jamais fait ça tu peux tester chez toi si ça marche ? car jtrouve ça louche j'ai pas fait de grosses erreurs il me semble
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Plusieurs fautes dans votre code :
#include <stdio.h> 
#include <stdlib.h>

int main(void) 
{ 
double s,x,varret; 

s=0; 
varret=10; 

while((int)x!=(int)varret){ 
  printf("Rentrez une valeur a additionner"); 
  scanf("%lf",&x); 
  s=s+x; 
} 
printf("Le résultat est : %f\n",s); 


system("PAUSE");
return 0; 
}

Pour info, j'ai casté (int) la condition x et varret car il ne faut pas comparer des nombres flottants de cette façon à cause de l'architecture interne du PC. Il faut voir si la différence est inférieur à 10e-5 par exemple. Pour simplifier j'ai donc casté.
0
unmec13
 
Slt fiddy c'est encore moi depuis la dernière fois et l'histoire des KWH loool

Là encore j'ai besoin de toi...mais j'ai pas encore étudié le stdlib.h le systeme PAUSE et le (int) avant x et varret

donc jme dit peut-etre que ya un autre moyen plus simpliste pour le faire

Ou alors l'exo est fait exprés pour qu'on sache de nous même le faire looool
0
unmec13
 
jte remet le sujet tel que au moins tu vois exactement :

Ecrire un programme qui affiche la somme d'une suite de nombres fournis par l'utilisateur et qui se termine par une valeur particuliere, varret, qui n'en fait pas partie.
varret est fournit par l'utilisateur en premier
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ah, j'avais même pas tilté :-).

Quelques remarques :
Pourquoi utiliser des float/double alors ? Utilise simplement des int.

Le system("PAUSE") c'est juste pour éviter que la fenêtre ne se referme à la fin du programme. Sinon, tu risques de voir la fenêtre se refermer aussitôt sans que tu aies le temps de lire "le résultat est". Teste sans, tu comprendras le problème. Si ça te gène, tu peux remplacer par un scanf bidon.

varret est fournit par l'utilisateur en premier
Je pense qu'il faut faire aussi un scanf pour varret. Non ?

affiche la somme d'une suite de nombres fournis par l'utilisateur et qui se termine par une valeur particuliere, varret, qui n'en fait pas partie.
Toi tu as compté le varret dans la somme. Regarde bien ;-))).
0
unmec13
 
Pourquoi utiliser des float/double alors ? Utilise simplement des int.
Il me semble que la prof a dit que si on sait pas la taille mieux vaut mettre Float afin qu'il puisse accueillir de grandes valeurs...remarque on travaillait sur un exo avec x^n a ce moment là c'est peut-être pour ça

Le system("PAUSE") c'est juste...
Ok je connaissais pas...moi je faisais vite un IMPRIM ECRAN pour voir le résultat à chaque fois lool

J'ai essayé avec ce que tu m'as donné de rajouter un
Printf("choisissez la varret");
scanf("%f",&varret);


mais apparemment c'est pas ça car le programme s'arrete juste aprés avoir rentré cette valeur en me mettant le résultat est 0.00000


Et je voulais savoir si le SYSTEM PAUSE il était lié au STDLIB ou je peux l'utiliser seulement avec STDIO ???
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Printf("choisissez la varret");
scanf("%f",&varret);
Normal, varret est de type double dans mon exemple. Il faut donc mettre : scanf("%lf",&varret); (L minuscule).

La fonction system appartient au header stdlib.h.
0
unmec13
 
Ok c'est vraiment des fautes bêtes que je fais c'est incroyable....

Merci encore bcp pour tout jte dirai si ya une réponse plus facile ;-) bonne soirée :-)
0