begin process at 2012 05 29 05:04:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Fonction Scrabble


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fonction Scrabble

vendredi 27 janvier 2006 à 18:42:05 | Fonction Scrabble

bowen_tk

Bonjour
 
Je suis entrain de programmer un scrabble en C++ mais je rencontre actuellement un probleme :
 
Mon programme possede une classe Cmot et une classe Cjeu  
Lorsque je saisis un mot pour pouvoir le mettre sur le plateau, je souhaite verifier s'il fait parti du dictionnaire que j'ai charger dans un tableau de Cmot ou chaque case comporte un mot  
Ce tableau est dans cjeu
 
Mais voila je vois pas comment faire pour comparer le mot taper avec tout les mot du dictionnaire et voir s'il est dedans
pouvez vous m'aider
Je pense qu'il faut faire deux boucles while imbriquer
sachant que j'ai une fonction qui compte le nombre de lettre du mot entrer, que je connais le nombre de mot du dictionnaire et que par exemple dictionnaire[j].mot[i] correspond a la ieme lettre du jeme mot
Je suis sous visual C++ et je n'ai le droit qu'au fonction de base à savoir celle accessible sans chargement de bibliotheque sauf iostream.h

aider moi svp
 
merci d'avance

vendredi 27 janvier 2006 à 19:38:21 | Re : Fonction Scrabble

bowen_tk

Voici ce que j'ai comme debut :

int Cjeu::Comparer()
{
int p=0;
int i=0;
int j=0;
while ((motaplacer.motinter[i]!=dictionnaire[j].mot[i])&&(j<22498))  //motaplacer.motinter[i] : i eme lettre du mot saisi, dictionnaire[j].mot[i] : i eme lettre du j eme mot du dictionnaire, 22498 nbre de mot du dico
{

       j++;
       i=0;
       while ((motaplacer.motinter[i]==dictionnaire[j].mot[i])&&(i<motaplacer.Lettres())) //motaplacer.Lettres() : procedure pour compter le nombre de lettre du mot saisi
      {
              i++;
       }
}
cout<<j;
return j;
}

Cette procedure marche quand le mot commence avec une lettre diferente de a mais pour un mot commencant par a ca foire

aidez moi svp

vendredi 27 janvier 2006 à 20:16:30 | Re : Fonction Scrabble

platon179

Membre Club
Salut,

Tu n'as pas besoin tester toutes les lettres une à une, des fonctions de comparaison de chaînes de caractères existent déjà ;)
Ton mot est stocké sous quelle forme dans Cmot ??? Un string ou un char * ?

Si c'est un string, tu peux faire quelque chose comme :
bool Cjeu::dansDico(string motaplacer)
{
   for(int i=0; i<22498; i++)
   {
      if(dictionnaire[i].mot == motaplacer)
         return true;
   }
   return false;
}


Si c'est un char *, c'est quasiment identique :
bool Cjeu::dansDico(char *motaplacer)
{
   for(int i=0; i<22498; i++)
   {
      if(strcmp(dictionnaire[i].mot, motaplacer) == 0)
         return true;
   }
   return false;
}

Bonne soirée @+
vendredi 27 janvier 2006 à 20:28:50 | Re : Fonction Scrabble

bowen_tk

merci pour ton aide mais ce que la prof attend de nous c quelquechose plus proche de ce que je propose car on a vu que des void et int pour les procedure et mon mot est dans un char
Qu'est ce que bool? qu'est ce qui en sort?
et c'est quoi cette fonction : strcmp()?

Autre question donc en sorti j'aurais un nombre et j'aimerais aussi comparer les lettres de ce mots avec les lettres qui sont sur le chevalet comment faire car ce que j'ai fait ca ne marche pas et j'aimerais qu'en sorti ca soit aussi 1 ou 0
je dois aussi utiliser une structure tres simple avec des for ou if ou while dans le style que je propose donc avez vous des idées?

merci d'avance

samedi 28 janvier 2006 à 00:34:20 | Re : Fonction Scrabble

ctx_man

Salut ! Je suis vraiment etonné... Votre prof vous demande de vous attaquer a des projets aussi complexes alors que vous n'avez rien vu du c++... "bool" vien d'un mathématicien qui a inventer un "algebre" apliquer au binaire. Un boolean c une variable qui ne peut avoir que 2 valeurs : vrai ou faux. Ici, si la fonction renvoit "true" c'est que le mot est dans le dictionnaire, sinon, il n'y est pas. Pas plus compliqué que ca. Si tu est capable de faire des fonctions qui recoivent en parametre ou renvoyent des void ou des int, qu'est-ce qui t'empeche de renvoyer autre chose ? Tu as besin d'attendre que ta prof te prenne par la main ? strcmp est une des nombreuses fonction du fichier "string.h". Une librairie standard provenant du language C. Cette librairie est incontournable. Cette fonction te permet de comparer deux chaines. Elle renvoit le nombre de difference entre les deux chaine (le chiffre peut etre negatif). Par consequent si les deux chaines sont totalement identique, elle renvoit 0. Pour te simpplifier la vie, si tu doit absolument faire un code proche de celui que tu as fournit, demmerde-toi pour ranger les mots de ton dico dans l'ordre alphabetque. int searching = 1; while(searching) { //Si on est pas au bout du mot if(motaplacer[i]) { if(motaplacer[i] != dico[j][i]) { j++; //Mot suivant dans le dictionnaire if(j == 22498) searching = 0: //Si on a tester tous les mots du dico } else i++; //Lettre suivante } //Sinon on sort else { searching = 0; } } Voila, ce n'est qu'un squelette, il manque certainement une ou deux condition, mais c'est globalement ce que tu doit faire. Mais le dictionnaire doit etre trier car je ne teste pas tous les mots du dico, je passe au suivant a la premier difference trouvee (mais dans mon programme il subsiste un probleme de taille : imaginons que le dictionnaire contienne ces deux mots : abcdef et bacdef, si le mot a placer est aacdef, le mot bacdef sera valider). Bref c'est le bordel, c'est pour ca qu'utiliser strcmp est tout indiquer, surtout qu'il s'agit d'une fonctione standard. Si ta prof veut vraiment pas que tu l'utilise tu peux la reecrire : int strcmp(char *str1, char *str2) { //On verifie d'abord les tailles //Pas la peine de chercher plus loins si les tailles sont differentes int taille1, taille2; taille1 = 0; taille2 = 0; while(str1[taille1]) taille1++; while(str2[taille2]) taille2++; if(taille1 != taille2) return taille1-taille2; //Si les tailles sont identique, on compte le nombre de difference //Entre les deux chaines taille1 = 0; taille2 = 0; while(str1[taille1]) { if(str1[taille1] != str2[taille1]) taille2++; taille1++; } return taille2; } Voila, je croi que tu as toutes les clefs en mains pour satisfaire ta prof sans trop te casser le c** ^^.
samedi 28 janvier 2006 à 11:15:32 | Re : Fonction Scrabble

bowen_tk

Merci beaucoup ctx_man
Sinon vous avez des idées pour cette question
"Autre question donc en sorti j'aurais un nombre et j'aimerais aussi comparer les lettres de ce mots avec les lettres qui sont sur le chevalet comment faire car ce que j'ai fait ca ne marche pas et j'aimerais qu'en sorti ca soit aussi 1 ou 0
je dois aussi utiliser une structure tres simple avec des for ou if ou while dans le style que je propose donc avez vous des idées?"
samedi 28 janvier 2006 à 11:20:49 | Re : Fonction Scrabble

bowen_tk

d'ailleur comment on appelle la fonction
bool Cjeu::dansDico(char *motaplacer)
{
   for(int i=0; i<22498; i++)
   {
      if(strcmp(dictionnaire[i].mot, motaplacer) == 0)
         return true;
   }
   return false;
}

Comparer(?)

merci d'avance
samedi 28 janvier 2006 à 12:16:48 | Re : Fonction Scrabble

vecchio56

Administrateur CodeS-SourceS
La recherche séquentielle est très mauvaise, ici tu peux faire une recherche dichotomique. Comme tu es en C++, tu peux en profiter et utiliser un set. Ainsi pour 22498, tu pourra savoir si ton mot est présent en moins de 15 comparaisons set mots; -tu remplis mots: pour chaque mot: mots.insert(...); -pour savoir si un mot est présent ensuite: if(mots.find("lemot") != mots.end()) { // le mot est présent }
samedi 28 janvier 2006 à 12:26:30 | Re : Fonction Scrabble

bowen_tk

vecchio56 pourrais tu un peu detailler car la j'ai pas tout compris et tu parle pour la question sur la recherche dans un dico ou pour l'autre??
samedi 28 janvier 2006 à 12:34:18 | Re : Fonction Scrabble

vecchio56

Administrateur CodeS-SourceS
Pour la recherche oui. Je crois que j'ai tout expliqué. Il s'agit bien de savoir si un mot est présent dans une liste?

1 2

Cette discussion est classée dans : fonction, mot, dictionnaire, classe, scrabble


Répondre à ce message

Sujets en rapport avec ce message

CListBox [ par wanny ] Bonjour.Dans une classe d'une fonction, je déclare une autre classe (avec une boite de dialogue à afficher) :Dans la boite de dialogue, il y a une CLi vérification du mot de passe [ par biscot19 ] Bonjour,Je cherche comment vérifier un mot de passe NT en C++.J'ai vu que la fonction NetUserChangePassword permettait de le faire mais comme son nom utiliser une fonction d'une lib C dans une classe c++ [ par snook ] Bonjour,j'aimerais savoir comment doit on proceder pourappeler une fonction d'une librairie ecrite en C dansmon programme C++?exemple: ma lib possede Utilisation d'une fonction callback [ par laurentl2000 ] Bonjour, Voici une fonction callback destinée à envoyer les titres des fenêtres IE ouvertes dans une listbox... BOOL CALLBACK EnumWindowsProc(HWND hwn Visual c++ [ par Maxus ] Salut,j'ai un probleme sous visual c++ lorque j'execute une fonction d'une classe à partir d'une autre...Explication : dans une fenetre, j'ai une list Premier mot d'une chaine [ par daivil ] Bonsoir tout le monde,Je dois réaliser une fonction qui a le prototype suivnat :char *Premier (const T_Chaines ch);Et cette fonction doit me retourner ecrire une fonction en c++ [ par Armandopoulos ] Salut,Comment puis ecrire une fonction en C++, qui doit memoriser un objet d une classe dependamment le l utilisateur, soit dans un fichier xml ou dan Appel de fonction [ par amauro ] Bonjour à tous!Bonjour à tous!J'aimerais appeller une fonction que j'ai crée moi-même dans la classe View.cpp de mon application MDI depuis la classe Probleme avec les threads en C++ sour linux [ par benjamvs ] Bonjour,j'ai le probleme suivant a regler en C++je travaille sur les threads sous linux, avec la librairie "pthread"Lorsque je crée un thread, celui c API Win 32 et classe SysListView32 dans fonction CreateWindowEx [ par djeauh ] Bonjour à tous je suis nouveau sur le site et j'ai une petite question. Dans un de mes anciens programme en WIN32 j'ai besoins de créer un controle li


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales