A voir également:
- Erreur d'affichage et de comparaison entre string et un tableau de caractère
- Erreur 0x80070643 - Accueil - Windows
- Caractère ascii - Guide
- Tableau croisé dynamique - Guide
- Comment faire un tableau - Guide
- Caractere speciaux - Guide
2 réponses
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
347
28 févr. 2020 à 20:49
28 févr. 2020 à 20:49
Bonjour,
Dans vos prochains messages, merci d'utiliser les balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code.
Premièrement, une chaine de caractère doit se terminer par la charactère \0, c'est comme ça que le cout sait quand il doit arrêter d'afficher les caractères, sinon il déborde de la mémoire et vous voyez des caractères étonnant. C'est gérer automatiquement par le type string mais comme vous utilisez un tableau de char pour la variable motencours, ça pose problème.
Deuxièmement, vous initialisez motencours avec nbcaracter mais la boucle pour remplir le tableau va jusqu'à nbcaracter*2 donc vous remplissez des caractères en dehors du tableau.
Dans vos prochains messages, merci d'utiliser les balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code.
Premièrement, une chaine de caractère doit se terminer par la charactère \0, c'est comme ça que le cout sait quand il doit arrêter d'afficher les caractères, sinon il déborde de la mémoire et vous voyez des caractères étonnant. C'est gérer automatiquement par le type string mais comme vous utilisez un tableau de char pour la variable motencours, ça pose problème.
Deuxièmement, vous initialisez motencours avec nbcaracter mais la boucle pour remplir le tableau va jusqu'à nbcaracter*2 donc vous remplissez des caractères en dehors du tableau.
Marci beaucoup quent217 , j'ai réussi a terminé mon code en C++.
Dans le but d'intégrer un afficheur 7 segments je dois reprogrammé le code en langage "arduino".j'ai donc fait ceci :
J'ai simulé un arduino avec le logiel en ligne https://www.tinkercad.com/ .
Je ne comprend pas le résultat du moniteur de série et cherche a savoir s'il y a des erreurs .
j' obtiens ceci en rentrant : Sport ; 3 .
Dans le but d'intégrer un afficheur 7 segments je dois reprogrammé le code en langage "arduino".j'ai donc fait ceci :
#include <SoftwareSerial.h> #include <string.h> using namespace std ; int niveau= 9; long listmot; String theme ; String bonmot ; unsigned int nbcaracter; int x = 0; bool dfaute ; bool v = false ; void dvoiture() { using namespace std ; String Voiture[5][5][2]= { {"c a r r o s s e r i e ","11","r o u e ","4","p e r m i s ","6","c o u r s e ","6","j a n t e ","5"}, {"b e r l i n e ","7","c o m p a c t ","7","s i e g e ","5","e c h a p p e m e n t ","11","m o t e u r ","6"}, {"e m b r a y a g e","9","p o r t e ","5","c o f f r e ","6","r e t r o v i s e u r ","11","d r i f t ","5"}, {"m a r q u e","6","c a p o t ","5","p l a q u e ","6","i m m a t r i c u l a t i o n ","15","d r a g s t e r ","8"}, {"f r e i n ","5","r a l l y e ","6","r a d i o ","5","v i t e s s e ","7","a u t o m a t i q u e ","11"} }; Serial.println("Vous devez trouver un mot de "); Serial.print(Voiture[niveau][listmot][1]); Serial.print(" lettres !"); Serial.println("Vous avez le droit de faire 6 fautes pas une de plus !"); Serial.println(" C'est parti! "); nbcaracter = Voiture[niveau][listmot][1].length(); bonmot = Voiture[niveau][listmot][0]; } void dmarque() { using namespace std ; String Marque[5][5][2]= { {"s o n y ","4","i n t e l ","5","a p p l e ","5","n o k i a ","5","s a m s u n g ","7"}, {"m i c r o s o f t ","9","a n d r o i d ","7","l i n u x ","5","n i n t e n d o ","8","b o s e ","4"}, {"l e n o v o ","6","d e l l ","4","h o n o r ","5","x i a o m i ","6","c o r s a i r ","7"}, {"m a r s h a l l ","8","k i n g s t o n ","8","t o s h i b a ","7","c i s c o ","5","i b m ","3"}, {"l o g i t e c h ","8","u b i s o f t ","7","w i k o ","4","p h i l l i p s ","8","n v i d i a ","6"} }; Serial.println("Vous devez trouver un mot de "); Serial.print(Marque[niveau][listmot][1]); Serial.print(" lettres !"); Serial.println("Vous avez le droit de faire 6 fautes pas une de plus !"); Serial.println(" C'est parti! "); nbcaracter = Marque[niveau][listmot][1].length(); bonmot = Marque[niveau][listmot][0]; } void dsport() { using namespace std ; String Sport[5][5][2]= { {"f o o t b a l l ","8","v o l l e y ","6","j u d o ","4","b a s k e t b a l l ","10","h a n d b a l l ","8"}, {"b a s e b a l l ","8","c y c l i s m e ","8","n a t a t i o n ","8","s n o w b o a r d ","9","s k i ","3"}, {"p a t i n a g e ","8","b i a t h l o n ","8","r o l l e r ","6","z u m b a ","5","v o i l e ","5"}, {"y o g a ","4","v t t ","3","p o l o ","4","f u t s a l ","6","t a e k w o n d o ","9"}, {"b o b s l e i g h ","9","p a r a c h u t i s m e ","12","u l t i m a t e ","8","r a f t i n g ","7","k a y a k ","5"} }; Serial.println("Vous devez trouver un mot de "); Serial.print(Sport[niveau][listmot][1]); Serial.print(" lettres !"); Serial.println("Vous avez le droit de faire 6 fautes pas une de plus !"); Serial.println(" C'est parti! "); nbcaracter = Sport[niveau][listmot][1].length(); bonmot = Sport[niveau][listmot][0]; } void setup() { Serial.begin(9600); randomSeed(analogRead(0)); } void loop() { using namespace std; Serial.println("Bienvenue au jeu du pendu!"); Serial.println("Selectionner un thème parmis:"); Serial.println("Voiture"); Serial.println("Sport"); Serial.println("Marque"); int p = 0; while(theme != "Sport" && theme!= "Marque" && theme!= "Voiture") { if(Serial.available()>0) { do { char c = Serial.read(); if(c != -1) { theme +=c; } delay(50); p++; }while(p<11); if(p>10) { theme += '\0' ; } } } Serial.println("Selectionner un niveau :"); Serial.println("1"); Serial.println("2"); Serial.println("3"); Serial.println("4"); Serial.println("5"); Serial.println(); int c = 10; do { if(Serial.available()>0) { int c = Serial.read(); if(c != -1) { delay(50); niveau = c ; Serial.println(niveau); } } }while((niveau != 49) && (niveau != 50) && (niveau != 51) && (niveau != 52) && (niveau != 53)); Serial.println("Good"); niveau = niveau-48 ; listmot = random(5); if (theme == "Voiture" ) { dvoiture(); } if (theme == "Marque") { dmarque(); } if (theme == "Sport") { dsport(); } char motencours[nbcaracter]; for(int w = 0;w<nbcaracter*2;w++) { if(w & 1)// n est impair { motencours[w] = ' '; } else// n est pair { motencours[w] = '_'; } } unsigned int nbcaracter1 = nbcaracter*2; motencours [nbcaracter1] = '\0' ; Serial.print(motencours); int faute = 0 ; char bonmot1[] = {'a'} ; bonmot.toCharArray(bonmot1 , nbcaracter1); while( faute < 6 && motencours != bonmot1 ) { Serial.println("\nEntrer une lettre!"); char lettre ; do { int lettre = Serial.read(); }while(lettre == -1 ); dfaute = true; for (int i = 0;i<nbcaracter*2;i++) { if(bonmot[i]==lettre) { motencours[i] = {lettre}; dfaute = false; } } if(dfaute==true) { faute++; }; Serial.print(motencours); } if (faute<6) { Serial.println("Bravo! Vous avez trouvé le mot "); Serial.print(bonmot); Serial.print(" en "); Serial.print(faute); Serial.print(" faute(s)"); } else { Serial.println("Dommage! Vous avez perdu vous allez être pendu !"); Serial.println("Le mot était "); Serial.print(bonmot); Serial.print("."); } }
J'ai simulé un arduino avec le logiel en ligne https://www.tinkercad.com/ .
Je ne comprend pas le résultat du moniteur de série et cherche a savoir s'il y a des erreurs .
j' obtiens ceci en rentrant : Sport ; 3 .
Bienvenue au jeu du pendu!
Selectionner un thème parmis:
Voiture
Sport
Marque
Selectionner un niveau :
1
2
3
4
5
51„ienvenue au jeu du pendu!
Selectionner un thème parmis:
Voiture
Sport
Marque