IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

problème avec le switch


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut problème avec le switch
    Bonjour,

    après un printf, puis un system("pause").
    le system pause demande d'appuyer sur une touche pour continuer


    le problème rencontré est au bout du case, une fois qu'on appuie sur une touche, ça met le message indiquer au default alors que je veux qu'il sort du switch pour afficher les messages en dessous.

    Je vous mets un bout de mon code.
    Si vous pouvez m'aidez svp?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
       code=getchar();
       while(code!='c')
       {
          switch(code)//debut du switch
          {
             case'a':
             case'A': //arrivage d un lot de poisson
             {
                //system ("cls"); // nettoie l ecran
                printf("\nVeuillez saisir le nom du lot:\n");
                fflush(stdin);
                gets(lot);
                for (i=0;i<nblot &&strcmp(lot,Tfish[i].lot)!=0;i+=1);
                   if (i<nblot)
                   {
                      printf("\nLOT DEJA ENREGISTRE: %s\n\n",lot);
                   }
                   else
                   {
                      strcpy(Tfish[i].lot,lot);
                      printf("\nVeuillez saisir le prix de la mise en vente:\n");
                      scanf("%5d",&Tfish[i].prix);
                      strcpy(Tfish[i].ach,"*");
                      nblot+=1;
                      printf("\nARRIVAGE:\nlot: %-20s prix: %d\n\n",lot,Tfish[i].prix);
                      system("pause");
                   }
             }
             break;//fin du case 'a' ou 'A'
     
             case'P':
             case'p': //Proposition de prix d un acheteur
             {
                system ("cls");
                if (nblot==0)
                {
                   printf("\nAUCUN LOT\n\n\n",lot);
                   system("pause");
                }
                else
                {
                   int p=0;
                   printf("\nVeuillez saisir le nom du lot:\n");
                   fflush(stdin);
                   gets(lot);
                   for (i=0;i<nblot && strcmp(lot,Tfish[i].lot)!=0;i+=1);
                      if (i<nblot)
                      {
                         printf("\nVeuillez proposer le prix d'achat:\n");
                         scanf("%d",&p);				
                         if (Tfish[i].prix>=p)
                         {
                            printf("\nPRIX MAINTENU\nnom du lot: %20s prix: %5d\n",Tfish[i].lot,Tfish[i].prix);
                            system("pause");
                         }
                         else
                         {	
                            Tfish[i].prix=p;
                            printf("\nVeuillez saisir le nom de l acheteur:\n");
                            fflush(stdin);
                            gets(ach);
                            strcpy(Tfish[i].ach,ach);
                            printf("\nNOUVEAUX PRIX\nnom du lot: %20s, prix: %5d\n",Tfish[i].lot,p);
                            system("pause");
                         }
                      }
                      else
                      {
                         printf("\nLOT INCONNU: %s\n\n\n",lot);
                         system("pause");
                      }
                   }
             }
             break;//fin du case 'p' ou 'P'
     
             default :
             {
                system ("cls"); // nettoie l ecran
                printf("\nCODE INVALIDE, la saisie est incorrecte\n\n\n");
             }
          }//fin du switch
     
          printf ("* RAPPEL *\n\n");
          printf ("A - Arrivage d'un lot de poisson\n\n");
          printf ("P - Proposition de prix d'un acheteur\n\n");
          printf ("L - Liste des lots\n\n");
          printf ("C - Cloture de cette vente aux encheres\n\n\n\n\n");
          printf ("VEUILLEZ RESAISIR LA LETTRE CORRESPONDANT\n   A L'EVENEMENT SOUHAITE ET CLIQUER SUR ENTRER: \n\n\n");
          code=getchar();
       }// fin du while

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    pour taper 'a' avec getchar(), tu tapes deux touches : [A] et [Entrée].
    getchar() retourne les deux. Tu dois donc ignorer le \n, ou mieux, ignorer tout le reste de la ligne (si par exemple on a tapé deux caractères avant de presser [Entrée].

    Cherche sur le forum une fonction appelée fpurge(), ça devrait t'aider.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    Merci je vérifie ça...

    j'ai mis des fflush(stdin) et ça marche aussi

    sinon quelqu'un sait comment je pourrais faire marcher ça ?

    while(code!='C' || 'c')

    je voudrais que la saisie de la lettre c ou C soit prise en compte

  4. #4
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Sauf erreur de ma part, mais dans ce cas des forumeur plus expérimenté me reprendront je pense que ca part de cette logique:

    while (code=='c' || code=='C')
    {
    puts("c'est bon ca marche mais je peux plus sortir noooooooon");
    }

    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    je n'ai d'erreur, mais cela ne fonctionne pas.

    le deuxième n'est pas pris en compte

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Citation Envoyé par kayenne77 Voir le message
    Merci je vérifie ça...

    j'ai mis des fflush(stdin) et ça marche aussi
    fflush(stdin) a un comportement indéfini et ne doit jamais être utilisé. fflush() ne marche que pour les flux de sortie.
    Citation Envoyé par kayenne77 Voir le message
    sinon quelqu'un sait comment je pourrais faire marcher ça ?

    while(code!='c' || 'c')

    je voudrais que la saisie de la lettre c ou C soit prise en compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((code != 'c') && (code != 'C'))

  7. #7
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    ha oui , oublier les parenthèse.
    merci mais moi sa fonctionne sans quand meme
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    désolé mais : while((code!='C') && (code!='c'))

    ne marche toujours pas ni while((code!='C') || (code!='c')) d'ailleurs

Discussions similaires

  1. Problème avec un switch
    Par sibile dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2008, 18h09
  2. petit problème avec mon switch
    Par beegees dans le forum C++
    Réponses: 2
    Dernier message: 03/05/2008, 19h52
  3. Problème avec un switch !
    Par Dark_Alex69 dans le forum Débuter
    Réponses: 16
    Dernier message: 31/10/2007, 02h33
  4. problème avec un switch
    Par Tobleron dans le forum Langage
    Réponses: 3
    Dernier message: 19/02/2007, 22h50
  5. Problème avec un switch contenant des strings
    Par dessinateurttuyen dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo