Question de noob avec char :D

Bricomix Messages postés 340 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 14 février 2005 - 14 janv. 2004 à 20:13
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 15 janv. 2004 à 20:41
Salut à tous,

Voilà, je suis noob en C++, j'ai lu un book et j'ai tappé le code suivant :

#include 
using namespace std;

int main() {
char rebegin[1] = "";
int age = 0;

cout << "Cool ! C'est ma premiere application C++ !!\\nJe suis un boss non ? (LOL)\\n\\n";

do {
cout << "Quel est ton age ? ";
cin >> age;
cout << "\\n\\n";

if (age >= 18 && age < 150) {
cout << "Bravo ! tu es majeur, tu as plus de 18 ans :D";
} else if (age > 0 && age < 18) {
cout << "Tu n'es pas majeur ! Ce programme n'est pas pour toi petit minus... :D";
} else {
cout << "Tu te fous de moi ! Tu ne peux pas avoir " << age << " an(s) !!";
}

cout << "\\n\\nOn recommence (O / N) ? ";
cin >> rebegin;

cout << "\\n\\n";
} while (rebegin=="o"||rebegin=="O");

return 0;
}


Voilà le problème : je veux que si l'utilisateur appuie sur la touche O à la fin, les questions recommencent. Seulement, je peux entrer n'importe quoi, ça ne marche pas, le programme se quitte. D'ailleurs, si au passage vous pouviez me réexpliquer le char je serai heureux :D

Merci d'avance de votre aide !

8-) Bricomix 8-)

17 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 janv. 2004 à 20:17
pour comparer des chaînes de caractères (entre""), c'est strcmp.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 janv. 2004 à 20:19
char rebegin[1] = ""; ==> ca ve dir que rebegin est un pointeur mais c'est inutile pour un tableau a une case
fait plutot :
char rebegin; et la ca marchera

sinon avec char rebegin[1]
tu devrai faire
while (*rebegin=="o"|| *rebegin=="O");
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 janv. 2004 à 20:27
ça serait pas plutôt :

while (*rebegin=='o'|| *rebegin=='O');
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 janv. 2004 à 20:32
ah, j'avais pas percuter que ca faisait une difference... je croyais que c'etait plus une histoire de convention
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 janv. 2004 à 20:34
par convention un char et un char* ne représentent pas la meme chose
0
Bricomix Messages postés 340 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 14 février 2005
14 janv. 2004 à 21:06
Merci beaucoup à vous. J'ai remplacé char rebegin[1]="" par char rebegin et (rebegin=="o"||rebegin=="O") par (rebegin=='o'||rebegin=='O'). Mais voilà, il y a un hic : si j'entre une lettre à l'age, la question "Voulez-vous recommencer" est posé, mais on peut pas répondre, le programme est directement terminé...

Encore merci à vous :big)

8-) Bricomix 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 janv. 2004 à 21:19
parce que cin attend un int et tu lui file un char, celui reste alors coincer dan le tampon jusqu'a la saisie d'un char

avant "Voulez-vous recommencer", vide le tampon
while(cin.get()!='\\n');
0
Bricomix Messages postés 340 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 14 février 2005
15 janv. 2004 à 18:54
Merci, mais en faites ça marche pas (je dois être vraiment nul :big) ) Voilà le code :

#include 
#include <string>
using namespace std;

int main() {
char rebegin;
int age = 0;

cout << "Cool ! C'est ma premiere application C++ !!\\nJe suis un boss non ? (LOL)\\n\\n";

do {
cout << "Quel est ton age ? ";
cin >> age;
cout << "\\n\\n";

if (age >= 18 && age < 150) {
cout << "Bravo ! tu es majeur, tu as plus de 18 ans :D";
} else if (age > 0 && age < 18) {
cout << "Tu n'es pas majeur ! Ce programme n'est pas pour toi petit minus... :D";
} else {
cout << "Tu te fous de moi ! Tu ne peux pas avoir " << age << " an(s) !!";
}

cout << "\\n\\nOn recommence (O / N) ? ";

while (cin.get()!='\\n');
cin >> rebegin;
cout << "\\n\\n";
} while (rebegin=='o'||rebegin=='O');

return 0;
}


Maintenant si je mets une lettre, le while part dans une boucle infinie ! Si je remplaces la ligne par while (cin.get()!='\\n') cout << cin.get() << endl alors j'ai plein de -1 qui s'affiche à l'infini...

Je vous remercie encore de bien vouloir aider le noob que je suis (ben oui je faisais du VB c'est bien mais j'avais envie de passer à quelque chose de plus puissant ;) )...

8-) Bricomix 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
15 janv. 2004 à 18:58
quel compilo? et quel os?

sinon essay ca
while (cin.get()!=0); c'est mieux
0
Bricomix Messages postés 340 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 14 février 2005
15 janv. 2004 à 19:01
Euh ça marche pas non plus... J'utilise VC++ 6 et Windows XP

Encore désolé de vous déranger !

8-) Bricomix 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
15 janv. 2004 à 19:08
alors essay ca
while (!cin.eof()) cin.get();

je suis aussi sous xp avec vc++6.0 et moi ca marche ;)
0
Bricomix Messages postés 340 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 14 février 2005
15 janv. 2004 à 19:14
Euh ben c'est bizarre. J'ai mis ce tu m'as dis, et c'est toujours pareil, si à l'age je mets une lettre, alors ça part en boucle infinie...

C'est pas normal non ?

8-) Bricomix 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
15 janv. 2004 à 19:34
scuz je suis a la ramasse j'avais pas capter que ca faisait une boucle inf chez moi aussi
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 janv. 2004 à 19:38
vous cherchez a vider cin?
0
Bricomix Messages postés 340 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 14 février 2005
15 janv. 2004 à 19:41
vecchio56 > Oui. Si tu as une idée... N'hésite pas...

Merci d'avance.

8-) Bricomix 8-)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 janv. 2004 à 20:00
j'ai cherché un peu et impossible de trouver comment faire, c'est un probleme à la con ca
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
15 janv. 2004 à 20:41
j'ai po trouver non plus :(
faut que tu fasse autrement...
0
Rejoignez-nous