A voir également:
- [C++] [Motus] Double boucle FOR
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double appel - Guide
- Double authentification google - Guide
- Download instagram for pc - Télécharger - Divers Communication
10 réponses
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
13 mai 2009 à 22:19
13 mai 2009 à 22:19
Pour le pot de marmelade je prends ;-).
Toutefois quelques petits conseils :
1) Change le system("pause") disgrâcieux par un getchar() (et inclue <cstdio>).
2) Change tes int (excepté le type de retour de main) par unsigned, ce sont des entiers positifs.
3) Change at(...) par [...] une fois que ton programme sera débuggué, c'est plus efficace. En effet contrairement à at(...) l'opérateur [...] ne contrôle pas si tu es encore dans la chaîne. Or si ton programme est correctement écrit, tu n'es jamais sensé pouvoir en sortir.
4) Pour le using namespace... pas de problème tant que tu es dans un fichier cpp, mais il ne faut pas l'utiliser dans des headers (hpp).
5) À terme le mot recherché devrait un paramètre de ta fonction (const std::string &).
Tu noteras au passage que dans ton code initial le at levait une erreur, ce qui laissait penser que tu sortais de ta chaîne. Comme les autres l'ont indiqué, c'est parce que ta variable posMotRecherche était incrémentée dans les if. En soit (si on omet le but du programme) ce n'est pas forcément gênant tant que tu restes dans ta chaîne.
Bonne chance
Toutefois quelques petits conseils :
1) Change le system("pause") disgrâcieux par un getchar() (et inclue <cstdio>).
2) Change tes int (excepté le type de retour de main) par unsigned, ce sont des entiers positifs.
3) Change at(...) par [...] une fois que ton programme sera débuggué, c'est plus efficace. En effet contrairement à at(...) l'opérateur [...] ne contrôle pas si tu es encore dans la chaîne. Or si ton programme est correctement écrit, tu n'es jamais sensé pouvoir en sortir.
4) Pour le using namespace... pas de problème tant que tu es dans un fichier cpp, mais il ne faut pas l'utiliser dans des headers (hpp).
5) À terme le mot recherché devrait un paramètre de ta fonction (const std::string &).
Tu noteras au passage que dans ton code initial le at levait une erreur, ce qui laissait penser que tu sortais de ta chaîne. Comme les autres l'ont indiqué, c'est parce que ta variable posMotRecherche était incrémentée dans les if. En soit (si on omet le but du programme) ce n'est pas forcément gênant tant que tu restes dans ta chaîne.
Bonne chance
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
12 mai 2009 à 15:36
12 mai 2009 à 15:36
pourquoi incrémenter "posMotRecherche" dans les if, vu que c'est fait dans les for. En théorie, tu rates des lettres non ?
moi, j'aurai inversé la boucle for, j'aurai balayé le mot proposé , et à chaque lettre j'aurai regardé si elle est dans le mot recherché.
(MotPropose.at(posMotRecherche) == MotRecherche.at(posMotPropose)) ça ne serait pas plutôt
moi, j'aurai inversé la boucle for, j'aurai balayé le mot proposé , et à chaque lettre j'aurai regardé si elle est dans le mot recherché.
(MotPropose.at(posMotRecherche) == MotRecherche.at(posMotPropose)) ça ne serait pas plutôt
(MotPropose.at(posMotPropose) == MotRecherche.at(posMotRecherche))
Utilisateur anonyme
11 mai 2009 à 12:47
11 mai 2009 à 12:47
et UP ! :-)
Je continue de rechercher de mon côté.
Si je trouve la solution, je vous tiendrai au courant !
Bonne journée à tous.
Cordialement.
L'Ours Paddington Brown.
Je continue de rechercher de mon côté.
Si je trouve la solution, je vous tiendrai au courant !
Bonne journée à tous.
Cordialement.
L'Ours Paddington Brown.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
12 mai 2009 à 13:17
12 mai 2009 à 13:17
Bon. Pas de résultat probant ... pour le moment ! :-)
J'ai toujours le même problème pour les lettres mal placées.
Merci d'avance !
Paddington Brown.
J'ai toujours le même problème pour les lettres mal placées.
Merci d'avance !
Paddington Brown.
Ouais c'est quand même bizarre que tu incrémentes...
J'aurais vu une boucle for comparant lettre à lettre (pour les biens placées), et UNE AUTRE pour les mal placées.
J'aurais vu une boucle for comparant lettre à lettre (pour les biens placées), et UNE AUTRE pour les mal placées.
#include <string> #include <iostream> using namespace std; //ça évite de mettre std:: partout !! void ComparerLettres(const string & MotPropose) { string MotRecherche = "PAPILLON"; string Resultat = "XXXXXXXX"; for(int posMotRecherche = 0; posMotRecherche < MotRecherche.size(); posMotRecherche++) /* lettres mal placées */ if((MotPropose.at(posMotRecherche) == MotRecherche.at(posMotRecherche))) Resultat.at(posMotRecherche) = 'B'; else for(int posMotPropose = 0; posMotPropose < MotPropose.size(); posMotPropose++) /* lettres mal placées */ if(MotPropose.at(posMotRecherche) == MotRecherche.at(posMotPropose)) Resultat.at(posMotRecherche) = 'M'; cout << "Resultat : " << Resultat <<endl; } int main() { string Proposition = "PHPLILHN"; //< Resultat attentu :::=> BXBMMBXB > //cout << "Proposer un mot de 8 lettres : "; //cin >> Proposition; ComparerLettres(Proposition); system("Pause"); return 0; }
Utilisateur anonyme
13 mai 2009 à 18:32
13 mai 2009 à 18:32
Bonjour MM. Char Snipeur et ahmet0851 !
Je tiens à vous remercier pour vos réponses claires et rapides.
Grâce à vous, j'ai pu corriger mon erreur et améliorer mon code. :-)
Il me reste à modifier quelques petites choses, et le programme sera (presque ?) opérationnel.
Je pense mettre mon programme en libre accès sur Internet.
Encore merci pour votre aide !
Bonne soirée à vous.
PS : à quel nom dois-je envoyer vos pots de marmelade ? ;-)
Amicalement.
L'Ours Paddington Brown.
Je tiens à vous remercier pour vos réponses claires et rapides.
Grâce à vous, j'ai pu corriger mon erreur et améliorer mon code. :-)
Il me reste à modifier quelques petites choses, et le programme sera (presque ?) opérationnel.
Je pense mettre mon programme en libre accès sur Internet.
Encore merci pour votre aide !
Bonne soirée à vous.
PS : à quel nom dois-je envoyer vos pots de marmelade ? ;-)
Amicalement.
L'Ours Paddington Brown.
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
14 mai 2009 à 00:11
14 mai 2009 à 00:11
Bof :-) Si le but c'est de le faire progresser autant lui donner les bonnes habitudes dès le début, non ?
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
14 mai 2009 à 11:22
14 mai 2009 à 11:22
Donc tu vois, ce n'est pas pour chipoter, c'est pour la bonne cause ^^
Paddington vient en train ;-)
Une gare anglaise
réponse trouvé sur wiki
https://fr.wikipedia.org/wiki/Paddington
Une gare anglaise
réponse trouvé sur wiki
https://fr.wikipedia.org/wiki/Paddington
14 mai 2009 à 00:05