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 :

[Débutant] Aide avec les Switch


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut [Débutant] Aide avec les Switch
    Bonjour,
    Je cherchne déséperement de l'aide
    Je voudrais savoir s'il ya un moyen de faire un switch avec un
    case 'nombreàtroisdigits' :

    Où nombreàtroisdigits est un nombre à trois chiffres de n'importe qu'elle sorte par ex 100.
    Ca marche avec un chiffre comme '1' mais pas avec plus gros.
    Connaissez vous un moyen?

    Le code :

    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
     
    number = sentencein[i]+sentencein[i+1]+sentencein[i+2] ;
    		switch(number){
     
    			//convert to str to support more than one number
    			case '100' :
    				boardde[i] = 'a' ;
    				break;
     
    			default :
    				cout << number << " is an illegal sign , please type your sentence again" << endl;		
    				error = 1;
    				break;
    		}
    	}
    Merci de m'aider; j'apprecie,
    ggcourtois

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    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 394
    Par défaut
    ben, tu peux toujours parser le nombre pour en faire une vraie valeur entière, et faire le switch dessus...
    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 Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    D'après ton code, number est une chaîne de caractères ?
    Si c'est bien le cas, il faut que tu le convertisses en numérique (int par exemple) avant de faire ton switch.

    Autre solution : se passer qu'un switch, et utiliser des if...

  4. #4
    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
    Si tu additionnes des caractères, qui ne sont que des entiers, tu obtiens un entier. Donc 100 (sans les quotes) devrait suffire. Ensuite il faut voir si le calcul que tu fais est bien ce à quoi tu t'attends.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Merci,
    J'ai enlevé les quotes
    Le calcul que j'ai fait devrais normalement prendre les trois premiers characters de sentencein et les mettres côté à côte puis l'enregistrer dans number.
    Est-ce bien cela?
    mais un autre problème : je ne peux voir le output car des que j'execute et que je tape 100, le programme ce ferme
    voici le main; si ca peux aider :

    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
     
    #include "function.h"
     
     
    using namespace std;
     
    //creation of variables
    string inputencryption;
    int number;
     
     
    int main()
    {
     
    	//std::ostringstream oss;
    	//*cin >> inputencryption;
    	//encrypt(inputencryption);*/
     //  
     
     
     
    	// convertis number en std::string
     
        std::ostringstream oss(number);
    	cin >> number;
    	oss << number;
     
        std::string result = oss.str();
    	decrypt(result);
     
     
    	system("PAUSE");
     
    }
    MErci de votre aide, vos reponses me sont précieuses,
    ggcourtois

  6. #6
    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
    Donc si je comprends bien tu fais '1' + '0' + '0' ? Effectivement ça ne fait pas 100.

    Bon. Tu veux faire quoi, au juste ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Non je voulais que les trois nombre ne s'ajoutent pas mais s'alignent de gauche à droite.
    Imagine sentencein est 100
    je veux que ca aligne les trois mais pas que ca les additionent bref, je veux que ce soit le input.
    Remarque :
    J'ai pas mis les autres cases mais je veux faire pareil pour les autres lettres de l'alphabet.
    Merci,
    ggcourtois

  8. #8
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut


    C’est assez confus, tu peux réexpliquer stp...

    Ouh la... j'ai peur d'avoir compris..... finalement...

    Où nombreàtroisdigits est un nombre à trois chiffres de n'importe qu'elle sorte par ex 100.
    Ca marche avec un chiffre comme '1' mais pas avec plus gros.
    Connaissez vous un moyen?
    Tu veux parser du binaire ?

  9. #9
    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
    Non je voulais que les trois nombre ne s'ajoutent pas mais s'alignent de gauche à droite
    Bref tu veux que lorsque tu saisis le chiffre 100, ta fonction teste le chiffre 100 ?

    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
    void decrypt(int Number)
    {
        switch (Number)
        {
            case 100 : ...
        }
    }
     
    int main()
    {
        int n;
        if (cin >> n)
            decrypt(n);
     
        return 0;
    }
    J'ai pas mis les autres cases mais je veux faire pareil pour les autres lettres de l'alphabet.
    Là par contre je décroche. Pour moi 100 ce n'est pas vraiment une lettre de l'alphabet.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Citation Envoyé par Laurent Gomila
    Bref tu veux que lorsque tu saisis le chiffre 100, ta fonction teste le chiffre 100 ?

    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
    void decrypt(int Number)
    {
        switch (Number)
        {
            case 100 : ...
        }
    }
     
    int main()
    {
        int n;
        if (cin >> n)
            decrypt(n);
     
        return 0;
    }

    Là par contre je décroche. Pour moi 100 ce n'est pas vraiment une lettre de l'alphabet.
    Non,
    pardon si l'user tape 100 ca fait 'a'
    101 c'est 'b' pas expemple,
    J'ai essayé votre code, avec le if ; des que je confirme mon input 100:
    il n'affiche rien
    Merci,
    ggcourtois

  11. #11
    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
    J'ai essayé votre code, avec le if ; des que je confirme mon input 100:
    il n'affiche rien
    Si tu as bien complété le "case 100 : ...", ça devrait fonctionner. Tu peux montrer ton code entier ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Voici le code :

    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
     
    void decrypt(string sentencein)
    {
     
    	int length = sentencein.length();//checks the length of sentencein variable
    	string *boardde = new string[length];//creates a pointer board the size of the sentencin.length
    	int error = 0;
    	char number;
    	int l = 0;
     
     
     
     
     
     
    	//Nettoyage
    	for(int b=0;b<length;b++)//clears the board ;sets all its lines to a null value
    	{
    		boardde[b]= ' ' ;
    	}
    	//Fin du Nettoyage
     
     
     
    	for(int i=0;i<length;i++)
    	{
     
    				number = sentencein[i]+sentencein[i+1]+sentencein[i+2] ;
    		switch(number){
     
    			//convert to str to support more than one number
    			case 100 :
    				boardde[i] = 'a' ;
    				break;
     
    			default :
    				cout << number << " is an illegal sign , please type your sentence again" << endl;		
    				error = 1;
    				break;
    		}
    	}
     
     
    	if(error==1) 
    	{	
    		cout << "Error ; enter sentence again :" << endl;	
    	}
    	else{
    	for(int c=0;c<length;c++){
    			cout << boardde[c];
     
    		}
     
    	}
     
    }
    Encore merci pour l'aide; jespere pouvoir resoudre ce problème ,
    ggcourtois

  13. #13
    Membre confirmé
    Avatar de jolatouf
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 170
    Par défaut
    bonjour,

    C'est peut etre un peu trop simple, mais si je suis ce que tu veux.

    Pourquoi ne pas faire de number un string et tester le string pour faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    std::string number
     
    cin>>number
     
    switch (number){
     
      case 100: return 'a';
        break;
     
     case 101: return 'b';
        break;
     
    etc...

  14. #14
    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
    Ok, donc tu n'as pas du tout essayé mon code, tant pis.

    Pourquoi ne pas faire de number un string et tester le string pour faire
    Et pourquoi ne pas le transformer en cafetière pour le comparer à des floats ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    J'ai dejà essayé mais je croyais que l'on pouvais pas tester de string dans le switch()?
    Merci,
    ggcourtois

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Citation Envoyé par Laurent Gomila
    Ok, donc tu n'as pas du tout essayé mon code, tant pis.
    Si, desolé j'ai changé mon code mais qu'est ce qui est different dans le tien?
    J'ai mis le if avec le cin >> excuse moi ,mais je suis vraiment débutant donc voila.
    ggcourtois

  17. #17
    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
    mais qu'est ce qui est different dans le tien?
    Ben globalement, j'ai enlevé tout le bazar de la fonction decrypt, ainsi que les conversions inutiles vers std::string. Enfin je pense que ça se voit non ?
    (au cas où ce ne serait pas clair, la fonction decrypt que j'ai donnée est complète, pour peu que tu remplaces les "..." par "return 'a'" ou ce que tu veux)

  18. #18
    Membre confirmé
    Avatar de jolatouf
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 170
    Par défaut
    Voici le lien pour la faq sur la syntaxe pour tester une chaine de carac dans un switch

    http://c.developpez.com/faq/cpp/?pag...GS_switch_case

    Laurent si tu as une fonction pour la cafetiere je suis preneur...

    Desole si ma reponse n'est pas tres interressante pour certain mais il m a semble que la simplicite pouvait venir a bout de ce probleme.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Citation Envoyé par Laurent Gomila
    Ben globalement, j'ai enlevé tout le bazar de la fonction decrypt, ainsi que les conversions inutiles vers std::string. Enfin je pense que ça se voit non ?
    (au cas où ce ne serait pas clair, la fonction decrypt que j'ai donnée est complète, pour peu que tu remplaces les "..." par "return 'a'" ou ce que tu veux)
    Ok dsl je croyais juste que tu reprenais QUE le switch
    Mais merci beaucoup et désolé pour l'incompréhension,
    ggcourtois

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    J'ai remplacé tout mon code par le tien
    Est-ca car ca me donne un message d'erreur.
    main :
    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
     
    #include "function.h"
     
     
    using namespace std;
     
    //creation of variables
    string inputencryption;
    int number;
     
     
    int main()
    {
        int n;
    	cin >> n;
        if (cin >> n)
            decrypt(n);
     
        return 0;
    }
    function.cpp
    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
     
    void decrypt(int Number)
    {
     
     
    	string *boardde = new string[100];//creates a pointer board the size of the sentencin.length
     
    	char number;
     
     
     
     
     
     
     
    	//Nettoyage
     
    	//Fin du Nettoyage
     
     
     
     
     
     
    		switch(number){
     
    			//convert to str to support more than one number
    			case 100 :
    				boardde[0] = 'a' ;
    				break;
     
    			default :
    				cout << number << " is an illegal sign , please type your sentence again" << endl;		
     
    				break;
    		}
    	}
    Sais-tu pourquoi ca rate?
    Merci,
    ggcourtois

Discussions similaires

  1. [Débutant]Problème avec les timers
    Par mickael777 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 11h00
  2. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34
  3. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 11h33
  4. [Débutant]Commencer avec les BDD
    Par Pill_S dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2004, 14h02
  5. Réponses: 2
    Dernier message: 29/08/2003, 17h52

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