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 :

probleme de retours au menu


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Par défaut probleme de retours au menu
    Bonjour a tous,

    Dans mon modeste programme, je souhaiterai, une fois l'apperation affiché, retourner à mon menu (sommaire dans mon code), mais au lieu de cela, il se ferme.
    Si quelqu'un peut m'éguiller ce serais cool

    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
    #include <stdio.h>
    long Sommaire()
    {
    		long Choix = 0;
    while (Choix < 1 || Choix >2)
    {
    		printf("Que souhaitez vous faire\n");
    		printf("1. Afficher les dimentions\n");
    		printf("2. calculer le volume\n");
     
     
    		scanf("%ld", &Choix);
     
    }
    	return Choix;
    }
     
    struct panneaux
    {
    	int longueur ;
    	int largeur;
    	int epaisseur;
    	int type;
    };
     
    void affiche (struct panneaux p)
    {
    	printf ("panneau de \nLargeur   :%d\nLongueur  :%d\nEpaisseur :%d\nType      :%d\n\n",p.largeur, p.longueur, p.epaisseur, p.type);
    }
    int calc (struct panneaux p)
    {
    return p.longueur*p.largeur*p.epaisseur;
    }
    void saisie (void)
    {
    	printf("Entrer la Largeur, Epaisseur, Longueur, et le Type du panneau\n");
    }
     
    int main (void)
    {
    int result;
     
    struct panneaux p;
    		saisie ();
    		scanf("%d %d %d %d", &p.epaisseur, &p.largeur, &p.longueur, &p.type);
    switch(Sommaire())
    {
    case 1:
    		affiche(p);
    		break;
    		return Sommaire;
    case 2:
     
    		result = calc(p);
    		printf("Volume du panneau : %d cm cube\n", result);
    		break;
    		return Sommaire;
    }
     
    system("PAUSE");
    			return 0;
    }
    Merci

  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
    Ces return n'ont rien à faire dans ton switch.
    Tu dois mettre le switch dans une boucle while() ou do-while().
    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é
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Par défaut
    merci,
    de cette sorte :
    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
    #include <stdio.h>
    long Sommaire()
    {
    		long Choix = 0;
    while (Choix < 1 || Choix >2)
    {
    		printf("Que souhaitez vous faire\n");
    		printf("1. Afficher les dimentions\n");
    		printf("2. calculer le volume\n");
     
     
    		scanf("%ld", &Choix);
     
    }
    	return Choix;
    }
     
    struct panneaux
    {
    	int longueur ;
    	int largeur;
    	int epaisseur;
    	int type;
    };
     
    void affiche (struct panneaux p)
    {
    	printf ("panneau de \nLargeur   :%d\nLongueur  :%d\nEpaisseur :%d\nType      :%d\n\n",p.largeur, p.longueur, p.epaisseur, p.type);
    }
    int calc (struct panneaux p)
    {
    return p.longueur*p.largeur*p.epaisseur;
    }
    void saisie (void)
    {
    	printf("Entrer la Largeur, Epaisseur, Longueur, et le Type du panneau\n");
    }
     
    int main (void)
    {
    int result;
    long choix2;
     
    struct panneaux p;
    		saisie ();
    		scanf("%d %d %d %d", &p.epaisseur, &p.largeur, &p.longueur, &p.type);
    while (choix2)
    {
    switch(Sommaire())
    {
    case 1:
    		affiche(p);
    		break;
    case 2:
     
    		result = calc(p);
    		printf("Volume du panneau : %d cm cube\n", result);
    		break;
    }
     
    }
     
    system("PAUSE");
    			return 0;
    }
    Le programme se lance, mais genere plein d'erreurs et ne fonctionne pas.

    Mais je ne comprend pas, pourquoi metre le switch dans une boucle qui renvoie lui meme à une boucle ?

  4. #4
    Membre confirmé
    Avatar de Nykoo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 234
    Par défaut
    Tu te compliques la vie et tu utilises scanf() tout seul. scanf() va lire le buffer clavier. Si tu as le malheur de taper quelque chose de différent de 1 ou 2 alors tu vas partir en boucle infinie: puisque scanf() va lire le même caractère (différent de 1 et 2) indéfiniment sans le supprimer du buffer.

    Fais plutôt une saisie sécurisée sur trois valeurs: 1, 2, et une autre disons 0.

    0 te permettra de sortir d'une boucle.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Par défaut
    Tu parles du 2nd while ?

    je l'avais codé comme le 1ier :while (choix2 >1 || choix2<2); mais cela affichait la meme erreur. je pence dailleur que c'est incorecte puisqu'il s'agit de case 1 ...

    Mais je ne saisi pas le principe la :'(

  6. #6
    Membre confirmé
    Avatar de Nykoo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 234
    Par défaut
    Je te conseille de simplifier

    En fait un exemple possible:

    Dans ton main:

    tant que choix != 0
    saisir choix
    si choix = 1 faire ceci
    si choix = 2 faire cela
    si choix = 0 ne rien faire
    fin tant que

    Tu as juste à coder la fonction saisir qui serait une fonction sécurisée qui renvoie 1 2 ou 0.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conception] Probleme affichage 1ere rubrique menu
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2006, 11h23
  2. Probleme Avec un Extend menu
    Par sezar dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/03/2006, 13h46
  3. probleme de retour automatique.
    Par samsso2005 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 14/03/2006, 12h06
  4. 2 problemes pour faire un menu en CSS
    Par Death83 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 12/08/2005, 08h23

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