Bonjour.
je suis étudiant et j'ai besoin de votre aide pour la résolution de ce projet, merci pour votre aide.
Cordialement.
![]()
Bonjour.
je suis étudiant et j'ai besoin de votre aide pour la résolution de ce projet, merci pour votre aide.
Cordialement.
![]()
Bonjour et bienvenue,
Voilà un bel exercice. Pour que nous puissions t'aider, merci d'expliquer ce que tu as fait, quels problèmes tu rencontres, avec les extraits du code où ceux-ci apparaissent.![]()
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
salut
dans ton tableau tu recherche le premier caractère de ton mots
à partir de là tu cherche le second caractère dans toutes les directions dans les cases accolé
si tu ne trouve pas le second caractère ... tu cherche de nouveau le premier caractère plus loin dans le tableau et ainsi de suite jusqu'à la fin de ton mots
tu peut optimiser tes recherche si la longueur du mots dépasse le nombre de case restant dans ton tableau tu passe a l'autre direction
Voilà ce que j'ai pu écrire pour la procédure mais rien ne marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 procedure RechMot(G: Grille ; T: TabMot); var x,y,i,j,q : integer; begin while (i<=39) do {pour chaque ligne de la grille} while (y<=15) and (i<=39)do {pour chaque cologne de la grille} while (G[x,y]=T[i,j]) {si la lettre du mot = la lettre de la grille} and (j<=15) do {si le mot n'a pas atteint la limite} begin j:=j+1; {on avance dans le mot} q:=y; q:=q+1; {on avance dans la grille} if (j=16) then {si on trouve le mot} begin writeln(G[x,y]); i:=i+1; {on passe a un autre mot} end else {si on ne trouve pas le mot} begin y:=y+1; {on passe a une autre cologne de la grille} j:=0; end; {quand les collognes de la grille se terminent} x:=x+1; {on passe a une autre ligne de la grille} y:=1; end; end;
salut
déjà il faut que tu fasse la recherche dans les 8 direction
regarde le tableau
// les 8 directions possibles
{ 5 6 7 }
{ 4 + 0 }
{ 3 2 1 }
ce qui nous donne
// les 8 directions possibles
je verrais le début plus comme cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 direction : array [1..8] of TPos = ((x: 0;y:-1),(x: 1;y:-1), (x: 1;y: 0),(x: 1;y: 1), (x: 0;y: 1),(x:-1;y: 1), (x:-1;y: 0),(x:-1;y:-1));
bon je te laisse reflechir un peu a la suite a donner .. On va pas tout te faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 for i := 1 to nbmots do begin // on cherche chaque mot mot := T[i]; // mot a chercher long := length (mot); // longueur du mots for li := 1 to MAX do // Toutes les lignes begin for co := 1 to MAX do // Toutes les colonnes begin if upcase (G[li-1, co-1]) = upcase(mot[1]) then begin { on a trouv la 1re lettre } y := li; // position de départ x := co; dir := 1 ; Found := False; while (dir <= 8) and Not(Found) do begin // parcours dans les huit directions ..... // a partir de la il faut chercher dans tout les direction![]()
Partager