Accueil > Forum > > > > Fonction Scrabble
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
|
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
|
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
|
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?
|
|
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
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|