Problème avec switch en c++

Résolu/Fermé
michguel Messages postés 37 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 29 avril 2020 - Modifié par michguel le 24/09/2011 à 17:20
 michguel - 26 sept. 2011 à 18:56
Bonjour,

je veux utiliser un switch dans une procédure comme suit en simplifiant,
int a;
cin>>a;
switch (a)
{case 1:
cout<<"premier"<<endl;
break;
case 2:
cout<<"deuxième"<<endl;
break;
case 3:
cout<<"troisième"<<endl;
break;
case 4:
cout<<"quatrième"<<endl;
break;
etc.....
default :
cout<<"nombre invalide"<<endl;
break;
}

Si je veux utiliser la fonction CASE avec un chiffre supérieur à 7 dans l'hypothèse ou je voudrais avoir une suite assez longue, j'obtiens le message d'erreur suivant

error C2041: chiffre '8' non conforme pour la base '8'

y a t'il une erreur au niveau de la déclaration de variable ?
Merci à qui pourra m'aider.
A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
24 sept. 2011 à 17:17
Est-ce que tu n'aurais pas écrit case 08: par exemple ?
Remarque : default ne prend pas d'accent
1
michguel Messages postés 37 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 29 avril 2020
24 sept. 2011 à 17:25
J'ai effectivement écris CASE 08
Je voudrai en fait faire une recherche en frappant un numéro correspondant à des données et il se trouve que la liste est plus longue que 8 valeur
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
24 sept. 2011 à 17:31
Le problème c'est que quand tu écris en dur une valeur qui commence par un 0 dans ce cas il est calculé en base 8 or dans cette base seules les chiffres de 0 à 7 sont autorisés.
Enlèves le 0 pour avoir directement case 8: et ça devrait marcher.
Si tu tiens vraiment as utilisé la base 8 alors dans ce cas il faut écrire case 010:
0
michguel Messages postés 37 Date d'inscription lundi 28 mai 2007 Statut Membre Dernière intervention 29 avril 2020
24 sept. 2011 à 17:37
Merci, je viens de vérifier en mettant 8 à la place de 08 et ça fonctionne
j'avais pourtant mis case 01, case 02, case 03 etc...
pourrais tu me dire pour info pourquoi arrivé à 8 il ne faut plus mettre le 0.
Je me suis lancé dans le C++ depuis peu et je suis curieux sur le fonctionnement.
pour l'accent sur le e de default c'est une erreur de frappe mais merci.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
24 sept. 2011 à 17:46
C'est de la base 8, donc 00=0, 01=1, 02=2... 07=7, 010=8, 011=9, 012=10...
Donc pour 1 à 7 ça marche sans problème car les valeurs sont les mêmes.
Remarque : si tu avais mis 010 tu n'aurais pas eu 10 mais 8...
0
Merci pour les infos ça me sera bien utile pour la suite .
J"aurais d'autre questions mais celle qui me taraude en ce moment est
comment faire pour créer une fenêtre interface Windows et y faire s"exécuter un programme qui pour le moment s'exécute simplement dans une fenêtre en cmd
J'ai vue Form1.h, mais je ne comprend pas encore comment ajouter des classes ou des fichiers à un projet
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
25 sept. 2011 à 19:41
Avec Visual Studio : Fichier > Nouveau projet > Visual C++ > Application Windows Forms
Dans l'explorateur de solutions : pour modifier le code, tu fais clic droit sur Form1.h, afficher le code, pour ajouter une classe, tu fais clic droit sur ton projet, ajouter une classe, etc...
0
merci pour l'info je vais essayer
j'avais essayé, mais dans l'ordre inverse et ça ne fonctionnait pas.

Si je me tire les cheveux, je repasserais poser mes questions ici :-)
merci encore
0