Prix de photocopie

Résolu
Naji_El_khomssi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
Naji_El_khomssi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
mon probléme c'est ce programme......je sais pas pourquoi il marche pas !!
SVP un peu d'aide :)



#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n;
char reponse ;
float p;
printf ("Donner le nombre de photocopies\n");
scanf ("%d",&n);
printf ("Etes-vous étudiants (o) ou (n) : ?\n");
scanf ("%c", &reponse);
if (reponse == 'n')
p=n*0.5;
else if (reponse == 'o' && n<=1000)
p=n*0.25;
else if (reponse == 'o' && n>1000)
p=n*0.20;
printf ("Le prix du photocopies est: %f",p);
}

3 réponses

Tomsuper Messages postés 1926 Date d'inscription   Statut Membre Dernière intervention   360
 
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n;
char reponse ;
float p;
printf ("Donner le nombre de photocopies\n");
scanf ("%d",&n);
printf ("Etes-vous étudiants (o) ou (n) : ?\n");
while (reponse != 'n' && reponse != 'o')
scanf ("%c", &reponse);
if (reponse == 'n')
p=n*0.5;
else if (reponse == 'o' && n<=1000)
p=n*0.25;
else if (reponse == 'o' && n>1000)
p=n*0.20;
printf ("Le prix du photocopies est: %f",p);
}

J'exel comme un tableur
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ca ne marchera pas mieux si tu ne vides pas le buffer...
De plus, tu as oublié d'initialiser "reponse"
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Erreur classique, il faut vider le buffet clavier.
Utilise chaque scanf() :
int c;
while( (c=getchar()) != '\n' && c != EOF );

Note : je te conseille de faire une fonction.

Il vaudrait mieux faire un while(...) pour s'assurer que réponse vaut soit 'n' soit 'o'.

float p;
Je te conseille d'utiliser des double. Ou alors multiplies au moins n par des float pour respecter la cohérence.

else if (reponse == 'o' && n<=1000)
Pas besoin de répéter reponse=='o'.

else if (reponse == 'o' && n>1000)
Un else suffit.

Après ton dernier printf(), n'oublie pas de flusher la sortie. Par exemple, rajoute '\n' après "Le prix du ...%f\n".

Tu as oublié return 0; en fin de main().

Note : la prochaine fois, merci d'utiliser la balise "code c". Exemple :
<code c>ici tu mets ton code</code>
0
Naji_El_khomssi Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
ok j'ai compris :) mrc bcp ca marché, et merci aussi pour les remarques ^^
0