Salut, je fais un exercice proposé sur un autre site, le but est d'utiliser la console pour mettre un argument sur le programme et de l'afficher.
(ex: tests.exe "Salut tout le monde")
Afin de ne pas surcharger une ligne, j'ai décidé d'en faire une autre quand la première contient 39 caractère, et d'en faire une troisième si la deuxième en contient 39 également.
Pour cela j'utilise substr et erase.
Jusque là tout fonctionne, j'ai testé avec cout et tout est bien découpé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 string chaine = argv[1]; string chaine2 = chaine.substr(39); chaine.erase(39); string chaine3 = chaine2.substr(39); chaine2.erase(39);
Je n'applique pas la méthode erase sur la chaine3, car c'est ce qui me permet de vérifier que le message n'est pas trop long.
Maintenant, avec des if et else if, je vérifie si la chaine2 contient plus d'un caractere, si oui j'affiche le message sur deux ligne, de même pour la chaine3.
haut et bas sont juste des "remplisseurs":
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 if(chaine2.size() < 1) { cout << " " << haut << endl; cout << "< " << chaine << " >" << endl; cout << " " << bas << endl; } else if(chaine3.size() < 1) { cout << " " << haut << endl; cout << "/ " << chaine << " \"" << endl; cout << "\ " << chaine2 << " /" << endl; cout << " " << bas << endl; } else if(chaine3.size() < 40) { cout << " " << haut << endl; cout << "/ " << chaine << " \"" << endl; cout << "| " << chaine2 << " |" << endl; cout << "\ " << chaine3 << " /" << endl; cout << " " << bas << endl; } else { cout << "Message trop grand !" << endl; return 0; }
Ensuite, on affiche la vache:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for(int i=0; i<chaine.size()+3; i++) { haut+="_"; bas+="-"; }
Le programme fonctionne très bien si le message contient + de 78 caracteres (soit trois ligne) mais affiche une erreur si non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 cout << " \ ^__^" << endl; cout << " \ (oo)\_______" << endl; cout << " (__)\ )\/\"" << endl; cout << " ||----W |" << endl; cout << " || ||" << endl;
C'est peut être la fatigue mais je ne vois pas où je me suis trompé.
Merci du coup de main !
Bonne nuit ^^
Partager