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 :

switch : où est l'erreur ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut switch : où est l'erreur ?
    Bonjour tout le monde

    j'ai mis en place un code pour tester plusieurs conditions dans un même exercice le problème que je rencontre se trouve au niveau d'un switch qui m'affiche une erreur incompréhensible :
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
     
    {
     
    long 	choix , bools , cat_produit , quantite , remise , total_ttc;
     
    	choix 		= 0 ;
    	bools 		= 0 ;
    	cat_produit 	= 0 ;
    	quantite 	= 0 ; 
    	remise 		= 0 ;
         	total_ttc 	= 0 ;
     
    printf("voici les produits que vous pouvez acheter\n");
    printf("=== Menu ===");
    printf("1 - Barette mémoire\n");
    printf("2 - Disques durs\n");
    printf("3 - Moniteur LCD\n");
    printf("4 - Processeurs\n");
     
    scanf("%d",&choix);
     
    switch (choix);
    	{
    case 1:
    printf("vous avez choisi des barettes de 512 mo à 250 dh\n");
    cat_produit = 1;
    break;
     
    case 2:
    printf("vous avez choisi des disques durs 160 go à 600 dh\n");
    cat_produit = 2;
    break;
     
    case 3:
    printf("vous avez choisi des moniteurs lcd à 1600 dh\n");
    cat_produit = 3;
    break;
     
    case 4:
    printf("vous avez choisi des processeurs valant 2500 dh\n");
    cat_produit = 4;
    break;
     
    default:
    printf("vous avez choisi un produit inexistant\n");
    //break;
    	}
     
    printf("combien vous en voulez\n");
    scanf("%d",&quantite);
     
    if (cat_produit = 1)
    	{
    total_ttc = 250*quantite;
    	}
     
    else if (cat_produit = 2)
    	{
    total_ttc = 600*quantite;
    	}
     
    else if (cat_produit = 3)
    	{
    total_ttc = 1600*quantite;
    	}
     
    else if (cat_produit = 4)
    	{
    total_ttc = 2500*quantite;
    	}
     
    else
    	{
    printf("vous ne pouvez acheter un produit inexistant");
    	}
     
    remise = (total_ttc >= 1000) ? -200 : 0;
     
     
    if (remise < 0)
    	{
    bools = 1;
    	}
     
    else 
    	{
    bools = 0;
    	}
     
    if(bools)
    	{
    printf("vous avez eu droit à une remise de 200 dh\n");
    printf("votre tolat ttc est de : %d\n",total_ttc+remise);
    printf("merci pour votre visite chez abdelilah software\n");
    	}
     
    else	
    	{
    printf("votre tolat ttc est de : %d\n",total_ttc+remise);
    printf("merci pour votre visite chez abdelilah software\n");
     
    	}
     
    return 0;
     
    }
    le code en lui même aurait pu être simplifié au maximum mais j'ai fait en sorte pour tester plusieurs conditions.

    gcc m'affiiche cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    abdel@ubuntu:~/dev-c$ gcc -o condition_application condition_application.c
    condition_application.c: In function ‘main’:
    condition_application.c:28: error: case label not within a switch statement
    condition_application.c:31: error: break statement not within loop or switch
    condition_application.c:33: error: case label not within a switch statement
    condition_application.c:36: error: break statement not within loop or switch
    condition_application.c:38: error: case label not within a switch statement
    condition_application.c:41: error: break statement not within loop or switch
    condition_application.c:43: error: case label not within a switch statement
    condition_application.c:46: error: break statement not within loop or switch
    condition_application.c:48: error: ‘default’ label not within a switch statement
    abdel@ubuntu:~/dev-c$
    pouvez s.v.p m'aider car je ne vois pas d'où viendrait l'erreur.
    merci d'avance.

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    retire le ';'
    et corrige le reste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    test2.c:23: attention : format «%d" expects type «int *", but argument 2 has type «long int *"
    test2.c:53: attention : format «%d" expects type «int *", but argument 2 has type «long int *"
    test2.c:55: attention : parenthèses suggérées autour de l'affectation utilisée comme valeur de vérité
    test2.c:60: attention : parenthèses suggérées autour de l'affectation utilisée comme valeur de vérité
    test2.c:65: attention : parenthèses suggérées autour de l'affectation utilisée comme valeur de vérité
    test2.c:70: attention : parenthèses suggérées autour de l'affectation utilisée comme valeur de vérité
    test2.c:95: attention : format «%d" expects type «int", but argument 2 has type «long int"
    test2.c:101: attention : format «%d" expects type «int", but argument 2 has type «long int"
    test2.c:77: attention : ne sera jamais exécuté
    test2.c:70: attention : ne sera jamais exécuté
    test2.c:65: attention : ne sera jamais exécuté
    test2.c:60: attention : ne sera jamais exécuté
    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
    if (cat_produit = 1)
       {
          total_ttc = 250 * quantite;
       }
     
       else if (cat_produit = 2)
       {
          total_ttc = 600 * quantite;
       }
     
       else if (cat_produit = 3)
       {
          total_ttc = 1600 * quantite;
       }
     
       else if (cat_produit = 4)
       {
          total_ttc = 2500 * quantite;
       }
    j'imagine que tu voulais plutôt écrire
    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
    if (cat_produit == 1)
       {
          total_ttc = 250 * quantite;
       }
     
       else if (cat_produit == 2)
       {
          total_ttc = 600 * quantite;
       }
     
       else if (cat_produit == 3)
       {
          total_ttc = 1600 * quantite;
       }
     
       else if (cat_produit == 4)
       {
          total_ttc = 2500 * quantite;
       }

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut
    merci merci

    ça a bien marché une erreur de débutant

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut
    c'est vrai tu as raison j'y ai pas fait attention .

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut
    Au fait comment fait on pour récupérer la valeur sortie par switch puisque toute
    fonction renvoie une valeur.

    sous linux c'est echo $? , si ça renvoie un zéro ça marche .

    Quelqu'un aurait une réponse s.v.p?

    merci d'avance.

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    switch n'est pas une fonction.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/01/2006, 14h21
  2. Où est l'erreur?
    Par Paulinho dans le forum C++
    Réponses: 3
    Dernier message: 26/10/2005, 09h48
  3. [VB.NET] Pagination DataGrid (où est l'erreur?)
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2004, 11h46
  4. Ou est l'erreur ?
    Par Antoine NSG dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/09/2004, 10h56
  5. [Erreur] Quel est cette erreur?
    Par netah25 dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/08/2004, 10h16

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