Prix de photocopie

Résolu
Naji_El_khomssi Messages postés 13 Statut Membre -  
Naji_El_khomssi Messages postés 13 Statut Membre -
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

  1. Tomsuper Messages postés 1921 Date d'inscription   Statut Membre Dernière intervention   407
     
    #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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ca ne marchera pas mieux si tu ne vides pas le buffer...
      De plus, tu as oublié d'initialiser "reponse"
      0
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  3. Naji_El_khomssi Messages postés 13 Statut Membre
     
    ok j'ai compris :) mrc bcp ca marché, et merci aussi pour les remarques ^^
    0