En c++

Fermé
mec o feminin - 16 juin 2011 à 10:35
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 16 juin 2011 à 21:11
Bonjour,

en faite j'ai un souci de comparaison de chaine de caractères en c++
voilà j'ai la chaine de caractère "PARIS" que je dois comparer à une liste de 19 villes qui pour certaines comporte "paris", et ces villes sont: "MARSEILLE", "PARIS", "LYON", "TOULOUSE", " NICE", "STRASBOURG", "NANTES", "MONTPELLIER", "BORDEAUX", "RENNES", "SEYSSINET PARISET", "DAMPARIS", "LE TOUQUET PARIS PLAGE", "PARIS L HOPlTAL", "VILLEPARISIS", "PARISOT", "CORMEILLES EN PARISIS", "FONTENAY EN PARISIS"
Donc moi à la base je suis partie sur la création de fonction mais je bloque sur la partie comparaison de chaque ville avec Paris

struct Tri
{
string nouvelle_ville;
};
Tri tri_ville[18];

void tri (int b)
{
string Nom;
int x;

cout<<"Entrez la ville: " <<endl;
cin>> Nom;

for(x = 0; x <= b; x++)
{

if(Nom == tri_ville[x].nouvelle_ville)
{


cout<< "Les villes correspondantes a votre demande sont:" <<endl;
cout <<tri_ville[x].nouvelle_ville ;

}

}
}
il faut que la programme renvoie toutes les villes comportant qui comporte paris quand l'utilisateur entre "Paris".
Merci d'avance!

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 16/06/2011 à 10:47
Pour comparer deux string il faut utiliser string::compare, pas l'opérateur ==
La confiance n'exclut pas le contrôle
0
mec o feminin
16 juin 2011 à 11:07
j'ai essayé avec string::compare mais j'ai pas vraiment compris l'utilisation donc sa n'a pas marché tu peux me donner un exemple d'utilisation avec des commentaires?
0
mec o feminin
16 juin 2011 à 16:01
ok je vous envoie tout le code et l'intitulé de l'exercice
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
16 juin 2011 à 16:03
Utilises les balises de code, pour conserver l'indentation !!!
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 juin 2011 à 11:24
Salut.
on peut tout à fait utiliser l'opérateur == si on veux, il est défini.
En fait, tu ne cherches pas à comparer 2 chaines, mais à savoir si l'une contient l'autre. J'utiliserai "find" :
if(tri_ville[x].nouvelle_ville.find(Nom)!=std::string::npos)
0
mec o feminin
16 juin 2011 à 12:03
je teste avec ce que tu as dis mais il refuse d'entrer dans la boucle maintenant. Et oui, tu as raison je cherche à voir si une chaine contient la chaine "PARIS"
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 juin 2011 à 15:43
pas de problème de casse ?
affiche le nom de ta ville à chaque fois ainsi que le résultat du find, on va bien trouver.
0
mec o feminin
16 juin 2011 à 15:50
Mais en faite le programme ne rentre pas dans le if donc je ne saurai te dire s'il y a un problème de casse.(Je commence à désespérer personne ne trouve de solution) c'est lourd!!!!
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 16/06/2011 à 15:57
Donne TOUT le code, c'est difficile de "deviner" où il peut y avoir une erreur sans savoir ce que tu fais ailleurs que dans le code que tu nous as donné... Par exemple qu'est-ce que b ?
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 juin 2011 à 16:20
fait les affichage AVANT le if !
0