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 :

Les switch : aide


Sujet :

C

  1. #1
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut Les switch : aide
    Bonsoir ,

    J'essaie de faire marcher ce code à l'aide d'un switch mais quelque chose ne va pas il me retourne erreur ou est-ce j'ai fait l'erreur ou l'oublie ?

    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
    #include <stdio.h>
     
     
    void main (void)
     
    {
     
    	int choix='1';'2';'3';'4';
    	int nbr;
    	char lettre='l';
     
     
    	printf("Voulez-vous : \n\n\n");
        printf("1. Determiner si une lettre est une majuscule ou une minuscule ou autre ?\n");
    	printf("2. Determiner si un nombre est positif ou negatif ou nul\n");
    	printf("3. Determiner si un nombre est pair ou impair\n");
    	printf("4. ne rien faire\n\n\n");
    	printf("Votre choix...\n\n");
        scanf_s("%d",&choix);
     
     
     
     
        switch (choix)
    	{
    	case '1' : 
     
    		       if (lettre=='a')
     
    	           {
    	            printf("Votre lettre est une minuscule");
     
    	           } 
    			   else if (lettre=='A')
    			   {
    	           printf("Votre lettre est une majuscule");
    	           }
     
    			   else 
    			   {
    			   printf("ou autre ?");
    			   }
    	           break;
     
    	case '2' :
     
     
    		       if (nbr >0)
     
    			   {
    			   printf("Votre nombre est positif");
     
    			   }
     
    			   else if (nbr <0)
    			   {
    			   printf("Votre nombre est negatif");
    			   }
     
    			   else 
    			   {
    			   printf("Votre nombre est nul");
    			   }
                   break;
     
    	case '3' :  if (nbr %2)
    				{
    				printf("Votre nombre est pair");
    				}
     
    				else 
    				{
    				printf("Votre nombre est impair");
    				}
                    break;
     
    	case '4' : printf("Ne rien faire");
                   break;
     
    	default : printf("Erreur\n");
     
    	}
    }
    merci de votre aide

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Keo,
    Citation Envoyé par Johnny P. Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	int choix='1';'2';'3';'4';
    Où as-tu vu ce genre de code ?

    Si par hasard c'est dans un cours/tuto/bouquin/doc..., poubelle direct, ou même, plainte auprès de l'auteur.

  3. #3
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    J'ai sûrement fait une erreur là mais étrange le compilateur ne m'a pas signalé ce genre d'erreur.
    Donc pour en signer plusieurs dans une variable je dois faire choix='1','2', en remplaçant les ; en , ?

    si ce que je dis est bon il m'affiche l'erreur toujours ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Bonsoir,
    Le scanf ("%d", &choix) mettra dans "choix" l'entier 1,2,3,... qui aura été tapé et non la valeur ascii du caractère '1','2',... correspondant.
    Vous pourriez faire scanf ("%c", &choix) ou ajouter '0' à la valeur lue.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Johnny P. Voir le message
    J'ai sûrement fait une erreur là mais étrange le compilateur ne m'a pas signalé ce genre d'erreur.
    Donc pour en signer plusieurs dans une variable je dois faire choix='1','2', en remplaçant les ; en , ?

    si ce que je dis est bon il m'affiche l'erreur toujours ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int choix='1';'2';'3';'4';
    initialise choix a '1'... le reste passe à la trappe.
    je ne comprends pas "en signer".
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Ce que je viens de faire mais toujours le même problème
    quand je choisi l'option : 1 ou 2,3,4
    j'ai une erreur
    L'utilisateur doit rentrer une valeur s'il écrit l'option 2 pour qu'il calcul le positif , négatif ou nul .

    Après ce choix j'ai une erreur donc il y a un problème de switch ?

    je ne comprends pas "en signer".
    donner plusieurs valeur à une variable je voulais dire


    Bonsoir,
    Le scanf ("%d", &choix) mettra dans "choix" l'entier 1,2,3,... qui aura été tapé et non la valeur ascii du caractère '1','2',... correspondant.
    Vous pourriez faire scanf ("%c", &choix) ou ajouter '0' à la valeur lue.
    int choix=1,2,3,4; (me retourne erreur de syntaxe constant)

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int choix=1,2,3,4; (me retourne erreur de syntaxe constant)
    normal!
    contentez vous de
    regarder ce que cela produit et reflechissez.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Une petite remarque concernant l'écriture du switch, dans la clause default, on peut aussi mettre un break (et je pense que c'est une bonne habitude à prendre). Dans ce cas, il n'y a pas de problème car la clause default est la dernière du switch mais on peut la mettre en début ou au milieu du switch et là, le break devient obligatoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    switch(nanana)
    {
       default : ...; break;
       case 1 : ...; break;
       case 2 : ...; break;
    }
    J'ai pour habitude d'écriture de souvent/toujours mettre la clause default en premier comme cela, je ne l'oublie pas.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Merci des conseils

    En réfléchissant je suis arrivé au résultat que l'étape 2,3,4 marche mais la une avec savoir si une lettre est une majuscule ou une minuscule ne marche pas
    L'erreur que j'ai -> quand je tape 1 juste après me renvoie autre
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    void main (void)
     
    {
     
    	int choix='1',nbr;
    	char lettre='a';
     
    //Choix de l'opération
    	printf("Voulez-vous : \n\n\n");
        printf("1. Determiner si une lettre est une majuscule ou une minuscule ou autre ?\n");
    	printf("2. Determiner si un nombre est positif ou negatif ou nul\n");
    	printf("3. Determiner si un nombre est pair ou impair\n");
    	printf("4. ne rien faire\n\n\n");
    	printf("Votre choix...\n\n");
        scanf_s("%c",&choix);
     
     
     
    // pour chaque cas choisi par l'utilisateur on effectue les opérations demandées 
        switch (choix)
    	{
    	case '1' : printf("Entrez une lettre");
                   scanf_s("%c",&lettre);
     
    		    if (lettre =='A')
     
    	           {
    	            printf("Votre lettre est une Majuscule\n");
     
    	           } 
    			   else if (lettre =='a')
    			   {
    	           printf("Votre lettre est une minuscule\n");
    	           }
     
    			   else 
    			   {
    			   printf("ou autre ?");
    			   }
    	           break; 
     
    	case '2' : printf("Entrez une valeur\n");
    		       scanf_s("%d",&nbr);
     
     
    		       if (nbr >0)
     
    			   {
    			   printf("Votre nombre est positif "); // positif
     
    			   }
     
    			   else if (nbr <0)
    			   {
    			   printf("Votre nombre est negatif ");  // négatif
    			   }
     
    			   else 
    			   { 
    			   printf("Votre nombre est nul "); // ou nul
    			   }
                   break;
     
    	case '3' : printf("Entrez une valeur\n");
    		       scanf_s("%d",&nbr);
     
    		        if ((nbr % 2) == 0)  // on test si pair
    				{
    				printf("Votre nombre est pair ");
    				}
     
    				else 
    				{
    				printf("Votre nombre est impair "); 
    				}
                    break;
     
    	case '4' : printf("Ne rien faire\n");
                   break;
     
    	default : printf("Erreur\n"); 
     
    	}
    }

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Johnny P. Voir le message
    En réfléchissant je suis arrivé au résultat que l'étape 2,3,4 marche mais la une avec savoir si une lettre est une majuscule ou une minuscule ne marche pas
    De loin ça devrait fonctionner si la lettre tapée est 'a' ou 'A' mais pas pour d'autres.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par Johnny P. Voir le message
    J'ai sûrement fait une erreur là mais étrange le compilateur ne m'a pas signalé ce genre d'erreur.
    Donc pour en signer plusieurs dans une variable je dois faire choix='1','2', en remplaçant les ; en , ?

    si ce que je dis est bon il m'affiche l'erreur toujours ?
    Tu ne peux pas mettre plusieurs valeurs simultanément dans une variable, ce qui n'aurait d'ailleurs aucun sens. Si, en revanche, ce que tu cherches à faire est définir à l'avance les valeurs possibles d'une variable, vois du côté des énumérations enum.

    Bon courage.

Discussions similaires

  1. [Débutant] Aide avec les Switch
    Par ggcourtois dans le forum C++
    Réponses: 30
    Dernier message: 01/08/2006, 12h20
  2. exercice c probleme sur les switch
    Par john93 dans le forum C
    Réponses: 7
    Dernier message: 14/01/2006, 09h53
  3. combobox et les ClientDataSet aide
    Par max45 dans le forum Bases de données
    Réponses: 5
    Dernier message: 13/11/2005, 15h28
  4. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34
  5. les switch ?
    Par jamesb dans le forum C++
    Réponses: 16
    Dernier message: 24/08/2004, 18h27

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