C/C++: probleme de programmation, retourn val
Résolu/Fermé
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
-
24 mai 2008 à 21:53
MouchT8 Messages postés 22 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 11 août 2008 - 26 mai 2008 à 16:15
MouchT8 Messages postés 22 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 11 août 2008 - 26 mai 2008 à 16:15
4 réponses
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
25 mai 2008 à 00:48
25 mai 2008 à 00:48
En fait si tu veux juste stocker des mots et vérifier s'ils sont stockés par recherche dichotomique, il serait plus logique d'utiliser les classes std::set et std::string de la STL.
Bien sûr si le but de l'exercice est d'implémenter une dichotomie c'est autre chose...
Bonne chance
#include <set> #include <string> #include <iostream> void trouve(const std::set<std::string> & mots,const std::string & mot){ if(mots.find(mot) != mots.end()) std::cout << mot << " a été trouvé !" << std::endl; else std::cout << mot << " n'a pas été trouvé" << std::endl; } int main(){ std::set<std::string> mots; trouve(mots,"tapir"); trouve(mots,"savane"); return 0; }
Bien sûr si le but de l'exercice est d'implémenter une dichotomie c'est autre chose...
Bonne chance
tuantu
Messages postés
41
Date d'inscription
dimanche 18 mai 2008
Statut
Membre
Dernière intervention
29 mai 2008
13
25 mai 2008 à 01:09
25 mai 2008 à 01:09
ton programme affiche vraiment qu'il trouve pas le mot ?
pcq chez moi déjà, ça compile pas pcq il connait pas la fonction scan_s
ensuite, si je vire la ligne ou tu demandes l'input de l'utilisateur et que j'initialise avec char* mot="arbre"
je reste bloqué dans le while sans jamais sortir ... bref ...
sinon j'pense que ton problème doit venir du fait que les mots ne sont pas ordonnés par ordre alphabétique dans ton dictionnaire ... ce qui est qd meme assez important pour une recherche dichotomique ...
pcq chez moi déjà, ça compile pas pcq il connait pas la fonction scan_s
ensuite, si je vire la ligne ou tu demandes l'input de l'utilisateur et que j'initialise avec char* mot="arbre"
je reste bloqué dans le while sans jamais sortir ... bref ...
sinon j'pense que ton problème doit venir du fait que les mots ne sont pas ordonnés par ordre alphabétique dans ton dictionnaire ... ce qui est qd meme assez important pour une recherche dichotomique ...
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
1
26 mai 2008 à 16:09
26 mai 2008 à 16:09
enfait voila j'ai déja trouver, je pense un probleme!!
Je vois que jai mit dans mon main(), pour l'entrée de "mot": %c donc déjà ca ne va pas jai donc remplacé par %s !
Et maintenant mon programme bug a cet endroit! a partir du moment ou j'entre mon mot, le programme sarret!!
Pourtant %s c'est bien pour une chaine de caractere nan?? et non pas %c pour un caractere uniquement!
Je vois que jai mit dans mon main(), pour l'entrée de "mot": %c donc déjà ca ne va pas jai donc remplacé par %s !
Et maintenant mon programme bug a cet endroit! a partir du moment ou j'entre mon mot, le programme sarret!!
Pourtant %s c'est bien pour une chaine de caractere nan?? et non pas %c pour un caractere uniquement!
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
1
26 mai 2008 à 16:15
26 mai 2008 à 16:15
sinon j'ai ordonné mes mots par ordre alphabetique dans mon tableau.
Je tiens a dire en réponse à TUANTU, que VS me dit qu'il ne connais pas scanf ! et qu'il faut que je le remplace par scanf_s , bizaroide?? mais ca marche en tout cas !!
Cet exercice est en fait un exercice préliminaire pour créer ma fonction dichotomique et la tester, avant de créer mon programme complet! seulement je dois suivre l'énoncé de l'exercie c'est pour cela que je galere surement....
voila l'énoncé au cas ou:
La fonction aura la déclaration suivante:
short dichotomie (dico, mot, nb_mots)
char**dico;
char *mot;
short nb_mots;
Elle devra retourner la valeur 1 si mot est trouvé dans dico et 0 si non.
L'algorithme est le suivant :
-on utilise 3 variables i, j et k entières
-i initialisé a 0
-j initialis a nb_mots
Executer une boucle tant que l'intervalle (i,j) est supèrieur à 1:
-mettre dans k la moyenne de (i,j)
-si le k eme élément de dico est supèrieur à mot, mettre k dans j sinon mettre k dans i
-fin de la boucle
-comparer mot avec le ième et j ème élément de dico
Pour tester la fonction, on pourra écrire un petit programme permettant ... blablabla
Je tiens a dire en réponse à TUANTU, que VS me dit qu'il ne connais pas scanf ! et qu'il faut que je le remplace par scanf_s , bizaroide?? mais ca marche en tout cas !!
Cet exercice est en fait un exercice préliminaire pour créer ma fonction dichotomique et la tester, avant de créer mon programme complet! seulement je dois suivre l'énoncé de l'exercie c'est pour cela que je galere surement....
voila l'énoncé au cas ou:
La fonction aura la déclaration suivante:
short dichotomie (dico, mot, nb_mots)
char**dico;
char *mot;
short nb_mots;
Elle devra retourner la valeur 1 si mot est trouvé dans dico et 0 si non.
L'algorithme est le suivant :
-on utilise 3 variables i, j et k entières
-i initialisé a 0
-j initialis a nb_mots
Executer une boucle tant que l'intervalle (i,j) est supèrieur à 1:
-mettre dans k la moyenne de (i,j)
-si le k eme élément de dico est supèrieur à mot, mettre k dans j sinon mettre k dans i
-fin de la boucle
-comparer mot avec le ième et j ème élément de dico
Pour tester la fonction, on pourra écrire un petit programme permettant ... blablabla