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 ?


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut les switch ?
    Bonjour, je suis nouveau,

    Je voudrais comprendre pourquoi chez moi le switch ne marche pas. Doit-on inclure un .h bien particulier bien que je pense qu'il soit dans ceux par defaut.

    Erreur: "switch" ???

    Il n'a pas l'air de le reconna�tre

    Code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    switch (directoryName)
    {
      case "help" : cout << "Demande d'aide"; goto start; break;
      case "quit" : cout << "Sortie..."; break;
    }
    La variable directoryName est un char initialis� pr�c�demment dans le code et est affect� par un cin.getline().

    Merci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 3
    Par d�faut
    si tu compile avec boreland il me semble que switch est dans la lib. par defaut .... alors ton prob est peut-etre quil te manque une variable defaut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    default:cout<<"cest bon les patates"

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    Non car il se trouve que j'ai d�j� mis avant un cout.
    Regarde plut�t tout le code alors

    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
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
     
    int main()
    {
    char directoryName[255];
     
    start:
     
    cout << "Tape le nom de l'application a lancer:";
    cin.ignore(1,'\n');
    cin.getline(directoryName,255);
     
     
    switch (directoryName)
    {
      case "help" : cout << "Demande d'aide"; goto start; break;
      case "quit" : cout << "Sortie..."; break;
    }
     
    return 0;
    }

  4. #4
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Relis bien le message d'erreur que ce bout de code te g�n�re. Il doit te dire un truc du style que tu n'utilises pas un "type int�gral". Soit, le switch ne marche qu'avec des choses qui peuvent �tre implicitement converties en entiers.
    Or toi, tu utilises des pointeurs...

    Bref, la fa�on typique est d'utiliser des "if() {} else if(){} else if() {} ... else {}" ou des tableaux associatifs.
    Autres solutions : utiiser des biblios d�di�s � la gestion des param�tres. En C, on a getopt ; en C++ on va bient�t avoir boost::options (dispo sur le CVS en attendant).

    Autres conseils :
    - oublie goto, utilise while et fais des fonctions.
    - utilise des std::string plut�t que des tableaux statiques

    Enfin, swith(){} n'a rien � voir avec une quelconque lib, il s'agit d'un mot cl� standard du C++.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    d�sol� mais je comprend pas tout... directoryName n'est pas un pointeur... donc explique...
    J'utilise Dev-C++ et les erreurs retourn�es sont

    "/Documents and Settings/Axel/Mes documents/Cpp projets/SansNom2.cpp C:\Documents and Settings\Axel\Mes documents\Cpp projets\C In"
    et
    "16 C:\Documents and Settings\Axel\Mes documents\Cpp projets\SansNom2.cpp switch"

    J'ai essayer un code d'un post avec un switch et il me retournais l'erreur "switch" de nouveau.

  6. #6
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Tu utilises des tableaux statiques qui sont implicitement convertis en pointeurs et non en entiers. "help" est tout sauf un entier. Or switch n'accepte que des entiers => c'est compl�tement innappropri� pour ce que tu veux faire. Tu peux tourner le probl�me dans tous les sens, tu n'arriveras pas � utiliser switch pour ton probl�me.

    Quant au message d'erreur, il m'a tout l'air d'�tre incomplet. Lis les lignes qui suivent. Cela confirmera ce que je te dis.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    Citation Envoy� par Loulou24
    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
    #include <iostream> 
     
    using namespace std; 
     
    int main() 
    { 
        // Initialisations... 
     
        switch (Devise) 
        { 
            case 'D' : MontantConverti = MontantCanadien / DOLLAR; break; 
            case 'E' : MontantConverti = MontantCanadien / EURO;   break; 
            // etc... 
        } 
     
        cout << MontantConverti << endl; 
     
        return 0; 
    }
    http://www.developpez.net/forums/vie...301625#1301625

    C'est forme ne marche pas chez moi est-ce normale ?

    Et pour le message d'erreur il n'y a pas de suite.

  8. #8
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Ce code est incomplet, en l'occurence aucune variable n'est d�clar�e. Il n'est pas cens� compiler tel quel.

    Le message d'erreur a s�rement une suite, sinon �a ne voudrait rien dire ; les gens qui ne connaissent pas bien les IDE � base de gcc se font souvent avoir

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    Pour le message d'erreur il fallait regarder dans le log du compilateur

    In function `int main()':
    switch quantity not an integer

    Et pour ton code Loulou j'avais remplacer la variable Devise par directoryName celle que je voulais contr�ler et toujours cette erreur � cause que c'est pas un entier, merci j'ai compris maintenant. Donc je vais faire comme Luc Hermitte m'a dit et utiliser des bons vieux if

  10. #10
    Membre �prouv� Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Par d�faut
    ils ont d�j� r�pondu mieux que je le ferais pour �lucider ton probl�me mais j'aimerais ajouter que pour comparer des cha�nes de caract�res tu as besoin de strcmp (en C) et donc ceci marche (comparaison caract�res),
    mais pas ta comparaison.

  11. #11
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    D'o� l'int�r�t d'utiliser des std::string
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    et comme std::cout, � quoi sert std::string. je sais que je suis nouveau :>

  13. #13
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    std::string sert � manipuler les cha�nes de caract�res avec une syntaxe plus intuitive que pour les tableaux de caract�res style C, sans se soucier de la gestion de la m�moire qui va avec, et offre beaucoup plus de fonctionnalit�s.
    En l'occurence pour ton probl�me �a te permettra par exemple de comparer tes cha�nes avec l'op�rateur == plut�t que strcmp().

    Une p'tite r�f�rence pour te faire une id�e : http://www.sgi.com/tech/stl/basic_string.html

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par d�faut
    std::cout sert a afficher � l'ecran
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    std::cout<<variable<<std::endl;
    std::cout<<"un texte"<<std::endl;
    //apres tu peux mixé
    std::cout<<"un texte "<<variable<<"texte2"<<std::endl;
    quant aux string c'est un type d�finie dans la STL pour facilit� la manipulation de chaine de caractere.

  15. #15
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    Merci et la derni�re chose

    Avec std::string c'est quoi la commande pour que je puisse la v�rifier avec un if ?

  16. #16
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Je suppose que tu veux dire par l� "la comparer � une autre cha�ne de caract�re" ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    std::string chaine = "toto";
     
    if (chaine == "titi")
       BlahBlah();
    else if (chaine == "toto")
       CoinCoin();
    else if (chaine == "tutu")
       MeuhMeuh();

  17. #17
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 152
    Par d�faut
    Ah voil� merci j'ai compris

    Merci, pour vos aides soutenues :>

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�seau d'entreprise : Gestion des n� sur les switch
    Par snoopy69 dans le forum Windows XP
    R�ponses: 1
    Dernier message: 24/04/2007, 11h16
  2. [D�butant] Aide avec les Switch
    Par ggcourtois dans le forum C++
    R�ponses: 30
    Dernier message: 01/08/2006, 12h20
  3. [Tableaux] Probleme avec les switch
    Par grumly22 dans le forum Langage
    R�ponses: 9
    Dernier message: 10/04/2006, 10h51
  4. exercice c probleme sur les switch
    Par john93 dans le forum C
    R�ponses: 7
    Dernier message: 14/01/2006, 09h53
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    R�ponses: 3
    Dernier message: 05/04/2005, 11h34

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