[Résolu] Pouvez-vous m'aider ?
Re: Pouvez-vous m'aider ?
La finalité de mon logiciel est qu'il est destiné pour les clubs du 3ème age, en fait c'est une aide à la compréhension des mots fléchés qui peuvent s'écrire dans n'importe quel sens, donc, dans le logiciel terminé, on tape le mot qu'on cherche et aussitôt on a la coordonnée X,Y du début de notre mot, on pourrait penser que c'est pour tricher, mais quand est presque sénile, on n'y pense même pas.
Pour les procédures, j'y ai pensé, mais il faut que le logiciel lise d'abord de gauche à droite et s'il ne trouve pas, il continue en lisant de haut en bas, puis dans l'autre sens, jusqu'à là pas de problème puisqu'on lit de la case 0 à la case LongueurLigne et de 0 à NombreLigne dans l'autre sens, mais le problème ce sont les diagonales, sutout quand on ne connaît pas la longueur de la grande diagonale.
En espérant m'être fait comprendre, je te remercie prendre de ton temps pour m'aider et je je suis d'accord du "tu" sur la forum
Pour les procédures, j'y ai pensé, mais il faut que le logiciel lise d'abord de gauche à droite et s'il ne trouve pas, il continue en lisant de haut en bas, puis dans l'autre sens, jusqu'à là pas de problème puisqu'on lit de la case 0 à la case LongueurLigne et de 0 à NombreLigne dans l'autre sens, mais le problème ce sont les diagonales, sutout quand on ne connaît pas la longueur de la grande diagonale.
En espérant m'être fait comprendre, je te remercie prendre de ton temps pour m'aider et je je suis d'accord du "tu" sur la forum
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Pouvez-vous m'aider ?
J'aurai procédé comme ça pour initialiser la taille du tableau dans le cas d'un tableau "carré"
je t'invite à regarder le code de ce topic : http://www.purebasic.fr/french/viewtopi ... hilit=melo
Code : Tout sélectionner
; --------------------
; Initialisation
; --------------------
Declare Remplir()
Declare CompteCar(fichier$)
Global MonFichier$ = "e:\MULTIMEDIA\PUREBASIC\4.40\tableau6x6.txt"
; --------------------
; PROCEDURES
; --------------------
Procedure CompteCar(fichier$)
Shared NbrCarLigne, NumLigne
If ReadFile(0, fichier$)
NbrCarX = 0 : NbrLigne = 0
While Eof(0) = 0
Ligne$ = ReadString(0)
NbrCarLigne = Len(Ligne$)
NbrCarX + NbrCarLigne
NumLigne + 1
Wend
CloseFile(0)
If NbrCarLigne = NumLigne
ProcedureReturn 1 ; tout est Ok
Else
ProcedureReturn 0 ; différence entre nbr ligne et nombre de col
EndIf
Else
ProcedureReturn -1 ; fichier non lu
EndIf
EndProcedure
; --------------------
; PROGRAMME
; --------------------
;- Création du tableau vide
If CompteCar("E:\MULTIMEDIA\PUREBASIC\4.40\tableau6x6.txt") = 1
NbrX = NbrCarLigne - 1
NbrY = NumLigne - 1
Global Dim Cel(NbrX,NbrY)
MessageRequester("Information","Tableau de " +Str(NbrCarLigne) + " x " + Str(NumLigne) + " créé !")
ElseIf CompteCar(MonFichier$) = -1
MessageRequester("Information","Impossible d'ouvrir le fichier!",#MB_ICONERROR)
Else
Debug "Tableau de taille incorrecte."
EndIf
End
je t'invite à regarder le code de ce topic : http://www.purebasic.fr/french/viewtopi ... hilit=melo
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pouvez-vous m'aider ?
Très grande classe, on voit bien qu'on n'à pas à faire à un débutant, que du bonheur !!!
Je voudrais passer pour un rabat-joie mais, c'est dommage que ça ne traite que d'un tableau déterminé
Merci encore et respect !
Je voudrais passer pour un rabat-joie mais, c'est dommage que ça ne traite que d'un tableau déterminé
Merci encore et respect !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Pouvez-vous m'aider ?
Je voulais dire, "je ne veux pas passer pour un rabat-joie", on devrait toujours se relire avant d'envoyer
Mille excuses
Mille excuses
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Pouvez-vous m'aider ?
Le tableau que tu va lire depuis un fichier au format texte sera forcement déterminé.Micoute a écrit :c'est dommage que ça ne traite que d'un tableau déterminé
Tu connais le nombre de ligne que tu vas lire et je pense que tu peux connaitre le nombre de caractères par ligne.
Ce qui donne les dimensions de ton tableau.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Pouvez-vous m'aider ?
Tu n'as pas bien compris ce que je voulais dire. La taille du tableau est déterminée par le fichier que l'utilisateur va ouvrir, ça va de soi.
Je sais bien que les "petits-vieux" sont un peu têtus, mais peut-être pas au point d'ouvrir toujours le même fichier ! Donc, la taille du fichier, je ne peux pas la connaître à l'avance !
C'est pour cette seule raison que je ne peux pas définir la diagonale la plus grande, sinon, je ferais une boucle conditionnelle.
Et encore mille mercis pour l'aide plutôt collégiale que je reçois. Vraiment merci à tous.
Je sais bien que les "petits-vieux" sont un peu têtus, mais peut-être pas au point d'ouvrir toujours le même fichier ! Donc, la taille du fichier, je ne peux pas la connaître à l'avance !
C'est pour cette seule raison que je ne peux pas définir la diagonale la plus grande, sinon, je ferais une boucle conditionnelle.
Et encore mille mercis pour l'aide plutôt collégiale que je reçois. Vraiment merci à tous.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Pouvez-vous m'aider ?
J'insiste quand même
. Si tu ouvres un fichier texte, tu peux connaitre facilement le nombre de lignes. Ensuite je pars du principe que chaque ligne est de longueur fixe que tu peux connaitre aussi très facilement.
mon fichier texte exemple (demo.txt)le code associé.
Peut être que tu pourrais donner un exemple d'un de tes fichiers de mots.

mon fichier texte exemple (demo.txt)
Code : Tout sélectionner
ERSUAENIARTG
TEDRTGOEFNUU
TENOJATTEIVR
OSISENNERPUE
HLSACOVLBARE
EIVEBTAEASTN
XUOHRNUINJEI
IANCDADEBMIM
UOIEJSBFLOGE
ONVREUCREUUH
XASCENNORUOC
XUAEDACRHOBB
Code : Tout sélectionner
Enumeration
#File
EndEnumeration
Lines=0
LineLen=0
Buffer$=""
Filtre$ = "Texte (*.txt)|*.txt"
Fichier$ = OpenFileRequester("Choisissez un fichier de mots à charger", "", Filtre$, 0)
If Fichier$
ReadFile(#File, Fichier$)
While Eof(#File) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
Buffer$ = ReadString(#File) ; Affiche ligne par ligne le contenu du fichier
Debug Buffer$
Lines+1
If Lines = 1
LineLen = Len(Buffer$)
EndIf
Wend
CloseFile(#File)
Buffer$ = "le fichier "+Fichier$+" Contient "+Str(lines)+" lignes"+#CRLF$
Buffer$ + "Chaque ligne à une longueur de "+Str(LineLen)+" caractéres."
MessageRequester("Information", Buffer$)
Else
MessageRequester("Information", "La sélection a été annulée.", 0)
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Pouvez-vous m'aider ?
CarrémentPeut être que tu pourrais donner un exemple d'un de tes fichiers de mots.

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pouvez-vous m'aider ?
Ok c'est juste pour l'exemple
MADAME
ABATTU
BACHER
OBTENU
ULTIME
LIMIER
et par exemple je veux CHER, le programme doit répondre X = 3, Y = 3
et si je tape DAME, il affichera X = 3, Y = 1 etc... par exemple BBD X = 1,Y = 3 , mais je pense que toute le monde a compris !!!
Mon problème c'est juste les diagonales.
là, il faut retrouver les groupes de lettres
0010111101abc110
d011101000101110
e000100011001001
f110111101010011
0110ihg110010110
11101001l0101101
00101110k1000110
10110101j0100101
1101011010111010
1101010111011101
0101101010110101
1110110111000010
0011000010111011
0001100011000110
1100110011001100
0000111100001111
Là, on n'a pas la même diagonale, je m'enfonce, je sais, mais je veux que tout le monde comprenne
mille excuses si je monopolise votre temps et mille mercis de vouloir m'aider, car j'ai vu que vous êtes à la hauteur de la tâche.
MADAME
ABATTU
BACHER
OBTENU
ULTIME
LIMIER
et par exemple je veux CHER, le programme doit répondre X = 3, Y = 3
et si je tape DAME, il affichera X = 3, Y = 1 etc... par exemple BBD X = 1,Y = 3 , mais je pense que toute le monde a compris !!!
Mon problème c'est juste les diagonales.
là, il faut retrouver les groupes de lettres
0010111101abc110
d011101000101110
e000100011001001
f110111101010011
0110ihg110010110
11101001l0101101
00101110k1000110
10110101j0100101
1101011010111010
1101010111011101
0101101010110101
1110110111000010
0011000010111011
0001100011000110
1100110011001100
0000111100001111
Là, on n'a pas la même diagonale, je m'enfonce, je sais, mais je veux que tout le monde comprenne
mille excuses si je monopolise votre temps et mille mercis de vouloir m'aider, car j'ai vu que vous êtes à la hauteur de la tâche.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Pouvez-vous m'aider ?
je suis en Vacance, mais je lis le forum ....
et franchement, je dis que t'a meme pas besoin de tableau pour faire ça !
tu as la fonction Findstring() qui peut te donner la place d'un mot dans une chaine$
de plus utiliser un tableau (DIM) n'est pas judicieux pour les diagonales
si tu regarde comment est fait un tableau de 6x6
ça donne
1-000000
2-111111
3-222222
4-333333
5-444444
6-555555
le fait de ne pas utiliser de tableau mais une seule et unique chaine va te simplifier la taches :
donc notre "tableau" deviens : 000000111111222222333333444444555555
du coup l'emploi de findstring deviens reellement efficace sur une seule chaine ! retrouver le debut de la ligne "222222" sera un jeux d'enfant !
pour les diagonale regarde : ( je reprends notre tableau et le mot a trouver sera les X )
1-X00000
2-1X1111
3-22X222
4-333X33
5-4444X4
6-55555X
mis en ligne ça donne : X000001X111122X222333X334444X455555X
si tu regarde bien tu vas t' apercevoir que les X (lettres du mot a trouver en diagonale ) sont espacés a chaque fois de 6 caracteres !! ( pour un tableau de 6x6 )
(et a 5 caracteres pour une diagonal inverse ...donc >>>> largeur tableau-1 )
bref trouver un mots en diagonal reviens a chercher toute les X position , cette position est déterminée par le premier X et ensuite par le PAS (step) qui correspond a la largeur du "tableau"
il se trouve qu'en Basic , la boucle For-next permet un saut (Step) ... mais d'autres méthodes existent (variable incrémenté )
bon cette fois , je me barre pour de bon en vacances

et franchement, je dis que t'a meme pas besoin de tableau pour faire ça !
tu as la fonction Findstring() qui peut te donner la place d'un mot dans une chaine$
de plus utiliser un tableau (DIM) n'est pas judicieux pour les diagonales
si tu regarde comment est fait un tableau de 6x6
ça donne
1-000000
2-111111
3-222222
4-333333
5-444444
6-555555
le fait de ne pas utiliser de tableau mais une seule et unique chaine va te simplifier la taches :
donc notre "tableau" deviens : 000000111111222222333333444444555555
du coup l'emploi de findstring deviens reellement efficace sur une seule chaine ! retrouver le debut de la ligne "222222" sera un jeux d'enfant !
pour les diagonale regarde : ( je reprends notre tableau et le mot a trouver sera les X )
1-X00000
2-1X1111
3-22X222
4-333X33
5-4444X4
6-55555X
mis en ligne ça donne : X000001X111122X222333X334444X455555X
si tu regarde bien tu vas t' apercevoir que les X (lettres du mot a trouver en diagonale ) sont espacés a chaque fois de 6 caracteres !! ( pour un tableau de 6x6 )
(et a 5 caracteres pour une diagonal inverse ...donc >>>> largeur tableau-1 )
bref trouver un mots en diagonal reviens a chercher toute les X position , cette position est déterminée par le premier X et ensuite par le PAS (step) qui correspond a la largeur du "tableau"
il se trouve qu'en Basic , la boucle For-next permet un saut (Step) ... mais d'autres méthodes existent (variable incrémenté )

bon cette fois , je me barre pour de bon en vacances

Re: Pouvez-vous m'aider ?
Merci beaucoup, voila la réponse que j'attendais. Vraiment là je suis anges, car bien sûr que c'est la solution.
Encore merci de cette compétence qui vient de l'expérience et que vous partagez avec moi !
Encore merci de cette compétence qui vient de l'expérience et que vous partagez avec moi !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Pouvez-vous m'aider ?
Les vacances ça purifie l'espritDobro a écrit :je suis en Vacance, mais je lis le forum ....![]()
et franchement, je dis que t'a meme pas besoin de tableau pour faire ça !
tu as la fonction Findstring() qui peut te donner la place d'un mot dans une chaine$
de plus utiliser un tableau (DIM) n'est pas judicieux pour les diagonales
si tu regarde comment est fait un tableau de 6x6
ça donne
1-000000
2-111111
3-222222
4-333333
5-444444
6-555555
le fait de ne pas utiliser de tableau mais une seule et unique chaine va te simplifier la taches :
donc notre "tableau" deviens : 000000111111222222333333444444555555
du coup l'emploi de findstring deviens reellement efficace sur une seule chaine ! retrouver le debut de la ligne "222222" sera un jeux d'enfant !
pour les diagonale regarde : ( je reprends notre tableau et le mot a trouver sera les X )
1-X00000
2-1X1111
3-22X222
4-333X33
5-4444X4
6-55555X
mis en ligne ça donne : X000001X111122X222333X334444X455555X
si tu regarde bien tu vas t' apercevoir que les X (lettres du mot a trouver en diagonale ) sont espacés a chaque fois de 6 caracteres !! ( pour un tableau de 6x6 )
(et a 5 caracteres pour une diagonal inverse ...donc >>>> largeur tableau-1 )
bref trouver un mots en diagonal reviens a chercher toute les X position , cette position est déterminée par le premier X et ensuite par le PAS (step) qui correspond a la largeur du "tableau"
il se trouve qu'en Basic , la boucle For-next permet un saut (Step) ... mais d'autres méthodes existent (variable incrémenté )
bon cette fois , je me barre pour de bon en vacances

Bonne idée

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pouvez-vous m'aider ?
@Dobro , si tu est à Tahiti , ramène moi la petite tahitienne que tu m'avais fait voir ( je ne l'ai pas oublié
) , je viendrais te rendre visite dans ton bled 


Re: Pouvez-vous m'aider ?
Je plussoieG-Rom a écrit :@Dobro , si tu est à Tahiti , ramène moi la petite tahitienne que tu m'avais fait voir ( je ne l'ai pas oublié) , je viendrais te rendre visite dans ton bled

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pouvez-vous m'aider ?
J'ai de nouveau un soucis, l'idée de Dobro est excellente, mais il y a un inconvénient, je refais le schéma :
X00000
1X1111
22X222
333X33
4444X4
55555X
pas de problème si ma chaîne se situe à droite du X, mais si je fais :
000000
111111
X22222
3X3333
44X444
555X55
là, ça ne va plus, la boucle For va de 0 à LongueurFichier au pas de LongueurLigne + 1, qui notre cas est 7, comment pourrais-je faire pour lire le premier X qui est à la 12ème position ?
Je vous remercie tous pour votre bonne volonté.
X00000
1X1111
22X222
333X33
4444X4
55555X
pas de problème si ma chaîne se situe à droite du X, mais si je fais :
000000
111111
X22222
3X3333
44X444
555X55
là, ça ne va plus, la boucle For va de 0 à LongueurFichier au pas de LongueurLigne + 1, qui notre cas est 7, comment pourrais-je faire pour lire le premier X qui est à la 12ème position ?
Je vous remercie tous pour votre bonne volonté.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !