rechercher et dénombrer string + maps? - C++ - Programmation
Marsh Posté le 26-06-2004 à 15:13:49
manque des const
tu as une enume : utilise là, et pas des int
je comprends pas trop à quoi sert indice, ça gache vachement de place
j'ai rien bité à ton truc, ça m'a l'air assez foireux au niveau algorithme, peut être tu ferait bien de jeter un oeil au std::map
Marsh Posté le 26-06-2004 à 19:18:58
tu pourrais m'expliquer ce que c'est les maps et comment on les utilise? ou me diriger sur un cours ou c'est bien expliqué et ou c'est compréhensible pour les débutants.
merci
Marsh Posté le 29-06-2004 à 18:58:25
j'ai changé mon code. pouvez vous me dire comment afficher une map de vecteur de int (le vecteur contient 4 int)?
Code :
|
merci de votre aide
Marsh Posté le 29-06-2004 à 19:01:22
tu la parcour avec un itérateur. RTFM
while (!in.eof())
{
c.det_nom (in, nom);
c.det_type (in, chaine);
changerligne(chaine);
}
si y a une erreur, tu verras que dal
utilise
while(in)
{
// action
}
et c'est tout
Marsh Posté le 26-06-2004 à 14:47:03
Bonjour,
Je vous explique mon problème :
J’ai un fichier texte de 60000 lignes.
Chaque ligne correspond à un élément.
Chaque élément appartient à une famille.
Il y a environ 60 familles.
Chaque élément peut prendre un des 4 paramètres suivants : parametre1, parametre2, parametre3, parametre4.
Il faut que le programme en C++ permette de dénombrer le nombre de parametre1, parametre2, parametre3, parametre4 pour chaque famille.
Dans le fichier texte, le nom de la famille est le 2ème champ de chaque ligne.
Le type de parametre (1,2,3,4) est le dernier champ.
Chaque champ est séparé par une tabulation.
Il peut y avoir des espaces entre les mots d’un meme champ.
Exemple d’une partie du fichier :
000124 famille1 inutile inuti le inutile parametre1
000125 famille1 inutile inu tile inutile parametre2
000126 famille1 inutile inutile inutile parametre2
000130 famille2 inutile inutile inutile parametre3
000134 famille2 i n utile inutile inutile parametre1
000138 famille3 inutile in utile inutile parametre4
000160 famille3 inutile inut ile inutile parametre2
000181 famille3 inutile inut ile inutile parametre3
voici mon code :
a la compilation , il n’y a pas d’erreur. Mais je n’obtiens pas ce que je veux à l’execution. Le programme ne rentre pas dans la boucle for.
Par ailleurs, dans un autre essai pour ce meme programme, sans la boucle for, en n’utilisant pas la fonction ajouter, ni enum, et en mettant directement if (chaine=="parametre1" ) p1 ++; alors j’obtiens bien à l’execution :
nom :
nombre de p1 : 2
nombre de p2 : 3
nombre de p3 : 3
nombre de p4 : 1
donc le nom de la famille ne s’affiche jamais, le programme fait la somme de chaque parametre, toutes familles confondues. Et pour le dernier parametre du fichier (que ce soit 1,2,3 ou 4), son nombre est toujours augmenté de 1 par rapport à la réalité dans le fichier. (dans l'exemple, parametre3 est le dernier du fichier. le programme en compte 3 alors qu'il n'y en a que 2.)
Voilà, ça fait beaucoup de problemes, je sais. Je débute en C++, je n’ai jamais fait de C. On m’a parlé des maps qui seraient utiles pour identifier le nom de la famille mais je ne sais pas comment ça marche.
Donc si vous pouviez m’aider à faire fonctionner correctement ce programme, je vous remercie par avance.