Problème switch

seleccao Messages postés 12 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 30 avril 2006 - 30 avril 2006 à 15:18
seleccao Messages postés 12 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 30 avril 2006 - 30 avril 2006 à 18:40
Bonjours à tous
Pour mon application en c++ je travaille avec de l'hexadecimal et j'utilise un switch
switch(n1)
{
case '0000':
hexa1 = "0";break;
case '0001':
hexa1 = "1";break;
case '0010':
hexa1 = "2";break;
}
Pour 0000 et 0001 ya pas de problème il me trouve le "0" et le "1" par contre pour le 0010 j'ai une erreur et si je change cette valeur par 0001 je n'ai plus d'erreur
Q'est ce qui ne va pas svp ?
Merci d'avance

8 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
30 avril 2006 à 17:14
Bé là, faudrait nous dire quelle est le type de ta variable n1
et ce que tu cherches à faire.

if(!Meilleur("Joky")) return ERREUR;<
0
Pitchikwow Messages postés 10 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 1 mai 2006
30 avril 2006 à 17:37
Salut,

Tu voulais certainement faire kelke chose comme ça.
a+.
int n1 = 0x10;
 int hexa1 = 0x00;
 switch(n1)
 {
 case 0x00: hexa1 = 0;
  break;
 case 0x01: hexa1 = 1;
  break;
 case 0x10: hexa1 = 2;
  break;
 default:
  break;
 };
 return hexa1;
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
30 avril 2006 à 17:39
Si n1 c'est un entier et que tu veux savoir ca valeur en hexa faut faire comme ceci :

switch(n1)
{
    case 0x0001 :
       hexa="1';
       break;
case 0x0002 :
 .......
}
0
seleccao Messages postés 12 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 30 avril 2006
30 avril 2006 à 17:48
en faite ce ke j'essaye de faire c d'avoir une textBox avec par exemple 1100 et au momen de cliké sur le bouton il me converti cette valeur en hexadecimal donc j'essaye toute les solutions possible (en c++ ihm), et le problème c'est ke si j'utilise les switch j'en aurai trop a faire...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
30 avril 2006 à 18:07
Tu n'as qu'a decouper ta chaine de caractere en bloc de 4 caracteres,  chaque de ces blocs correspondra un valeur de 0 à F.
0
seleccao Messages postés 12 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 30 avril 2006
30 avril 2006 à 18:21
String *b1 = bit1->Text;
String *b2 = bit2->Text;
String *b3 = bit3->Text;
String *b4 = bit4->Text;
String *b5 = bit5->Text;
String *b6 = bit6->Text;
String *b7 = bit7->Text;
String *b8 = bit8->Text;
String *hexa1 = String::Concat(b1, b2, b3, b4);
String *hexa2 = String::Concat(b5, b6, b7, b8);

int n1=Convert::ToInt32(hexa1);
int n2=Convert::ToInt32(hexa2);
//int a = 0010;

switch(n1)
{
case '0000':
hexa1 = "0";break;
case '0001':
hexa1 = "1";break;
case '0010':
hexa1 = "2";break;
case '0011':
hexa1 = "3";break;
case '0100':
hexa1 = "4";break;
case '0101':
hexa1 = "5";break;
case '0110':
hexa1 = "6";break;
case '0111':
hexa1 = "7";break;
case '1000':
hexa1 = "8";break;
case '1001':
hexa1 = "9";break;
case '1010':
hexa1 = "A";break;
case '1011':
hexa1 = "B";break;
case '1100':
hexa1 = "C";break;
case '1101':
hexa1 = "D";break;
case '1110':
hexa1 = "E";break;
case '1111':
hexa1 = "F";break;
default :
hexa1 = "ERREUR ";break;
}

switch(n2)
{
case 0000:
hexa2 = "0";break;
case 0001:
hexa2 = "1";break;
case 0010:
hexa2 = "2";break;
case 0011:
hexa2 = "3";break;
case 0100:
hexa2 = "4";break;
case 0101:
hexa2 = "5";break;
case 0110:
hexa2 = "6";break;
case 0111:
hexa2 = "7";break;
case 1000:
hexa2 = "8";break;
case 1001:
hexa2 = "9";break;
case 1010:
hexa2 = "A";break;
case 1011:
hexa2 = "B";break;
case 1100:
hexa2 = "C";break;
case 1101:
hexa2 = "D";break;
case 1110:
hexa2 = "E";break;
case 1111:
hexa2 = "F";break;
default :
hexa2 = "ERREUR";break;
}
hexBOX->Text = String::Concat(hexa1, hexa2);

Chaque bit est dans un textbox, je les ai concaténé par paquet de 4 afin davoir 1111 1111, un switch pour le 1er paquet et un switch pour le second, mais voila comme j'ai un programme qui utilise 16 octets il me faudrai trop de switch...
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
30 avril 2006 à 18:30
Utilise un tableau de string. Apres tu fait une boucle for, dans laquelle tu fais une conversion en int de la string suivi du switch (vu que le traitement est le meme dans tout les cas)
0
seleccao Messages postés 12 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 30 avril 2006
30 avril 2006 à 18:40
Ok merci laurent1024 je v essayé ;-)
Si quelqu'un à dautres propositions je suis preneur lol
Merci
0
Rejoignez-nous