Prix de photocopie

Résolu/Fermé
Naji_El_khomssi Messages postés 12 Date d'inscription dimanche 4 janvier 2015 Statut Membre Dernière intervention 22 avril 2016 - 4 janv. 2015 à 22:07
Naji_El_khomssi Messages postés 12 Date d'inscription dimanche 4 janvier 2015 Statut Membre Dernière intervention 22 avril 2016 - 5 janv. 2015 à 01:39
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 mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
Modifié par Tomsuper le 4/01/2015 à 22:33
#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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 4/01/2015 à 23:26
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
4 janv. 2015 à 23:26
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 dimanche 4 janvier 2015 Statut Membre Dernière intervention 22 avril 2016
5 janv. 2015 à 01:39
ok j'ai compris :) mrc bcp ca marché, et merci aussi pour les remarques ^^
0