Remettre les mots d'une phrase dans l'ordre.

Résolu
alex10gs Messages postés 5 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 20 novembre 2006 - 4 mars 2005 à 22:30
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 - 7 mars 2005 à 20:30
bonjour à tous, je suis nouveau et je débute sur vb.net depuis octobre 2004.
je suis étudiant en licence de langue et l'informatique est pour moi un moisir et une option dans mon parcours universitaire.
je dois dans le cadre d'un projet réaliser un logiciel qui ait un rapport avec les langues.

j'ai choisi de créer unlogiciel qui mélange les mots d'une phrase et l'utilisateur doit les remettre dans l'ordre. rien de bien méchant à première vue.
ms le problème c'est que je ne sais pas déclarer les tableaux à deux dimensions, ni lier le fichier texte qui contient les phrases que l'utilisateur doit remettre en ordre...

si quelqu'un peut m'aider :merci bcp

alex10gs

8 réponses

cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
5 mars 2005 à 01:11
Pourquois un tableau a 2 dimentions?



Connais-tu les fonctions Split et Joint pour gerer la transition entre la phrase et les tableaux?



ex:

dim original() as string



.

.

.


' redimensionne le tableau selon le nombre de mots et met un mot par case


original = split(PhraseATrouver," ")


' le premire mot est dans original(0) et ubound rend l'indice du dernier mot

NombreDeMots = ubound(original)+1



Apres, il faut melanger les mots etc...


Ce n'est qu'un tout petit bout du probleme mais peut-etre cela te met sur une voie?
3
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
6 mars 2005 à 09:31
Je ne vois pas non plus l'utilité d'un tableau a 2 dimensions ici, mais quoi qu'il en soit pour en declarer un:
dim toto (1 to 100,1 to 100) 'par exemple
ou encore pour un tableau redimensionable:
Dim tableau() As String


ReDim Preserve tableau(1 to 100, 1 to 100)
Sinon, cqui789 t'a donné une partie de la solution...
Pour melanger les mots après (suite de la solution de cqui789):

Dim neworiginal()
Dim RndNum as long

ReDim neworiginal(0 to UBound(Original))

For i = 0 to UBound(original)
Do

RndNum = Int(Rnd(1) * (UBound(Original)+1))
Loop While
Original(
RndNum) = -1

neworiginal(i) = original(RndNum)
original(RndNum) = -1
Next i
nouvellephrase = Join(neworiginal," ")

Remarque: Cela implique qu'il y est des espaces entre chaques mots et chaques ponctuations...


Warning
Admin Codes-Sources.com
http://www.decompiler-vb.net/
3
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
6 mars 2005 à 15:58
Cote interface utilisateur, je verrais bien, au lieu de reconstruire la
phrase melangee, de creer un label par mot, deplacable avec la souris
pour les remetre dans l'ordre...

mais c'est une autre histoire
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
6 mars 2005 à 16:17
pour creer les labels aulieu de les ranger dans un tableau, pose un
label LblNom sur la from et met sa propriete index a 0 et autosize a
true



puis, a la place de neworiginal(i) = original(RndNum)




ecrit:



If i + 1 > LblNom.Count Then Load LblNom(i) ' cree le label si il n'existe pas deja

LblNom(i).Visible = True ' un label qui vient d'etre cree n'est pas visible

LblNom(i).Caption = original(RndNum)
'

If i = 0 Then

LblNom(i).Left = 0 ' le premier mot est place a gauche

Else

LblNom(i).Left = LblNom(i - 1).Left + LblNom(i - 1).Width ' les mots suivants places a droite du precedent

End If



puis pour deplacer les mots:



Private Sub LblNom_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

lX = X

lY = Y

End Sub



Private Sub LblNom_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then LblNom(Index).Move LblNom(Index).Left + X - lX, LblNom(Index).Top + Y - lY

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alex10gs Messages postés 5 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 20 novembre 2006
6 mars 2005 à 18:46
merci pour ces conseils0.
je vais les etudier pour voir ce que je peux faire.

pour le tableau à 2 dimensions, c'est ce que m'a conseillé mon prof:
les lignes avec les phrases et le mots dans les colonnes.
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
6 mars 2005 à 19:49
Le probleme avec la proposition de ton prof, c'est que tu as un nombre
fixe de mot dans les phrases et je pense qu'il serait plus long
d'initialiser le tableau, mais ca pourrait marcher.


je verait mieux un fichier texte dans le quel tu viens chercher des
phrases comme ca tu peux ajouter des phrases sans recompiler le
programme.
0
alex10gs Messages postés 5 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 20 novembre 2006
7 mars 2005 à 19:25
merci, mais comment je fais pour lier le fichier texte au tableau?????
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
7 mars 2005 à 20:30
comme tu ne sait pas a l'avance le nombre de phrases tu vas avoir dans
ton fichier, je propose d'utiliser une collection. (collection, en
gros, ca peut s'utiliser comme un tableau mais on ne definit pas la
longueur, ca a beaucoup d'autre caracteristique, comme de pouvoir y
mettre presque n'importe quoi, si un pro veut nous conseiller un
tutorial, qu'il n'hesite pas)



form_load charge le fichier phrases.txt place avec l'application (a creer avec notePad par exemple).

le buton commande1 trouve une phrase aleatoire



Dim phrases As New Collection

Dim phrase As String



Private Sub Command1_Click()

phrase = phrases(Rnd * phrases.Count + 1)

Debug.Print "phrase: "; phrase

End Sub



Private Sub Form_Load()

Randomize
' juste pour melanger les nombres aleatoire

Open App.Path & "\phrases.txt" For Input As #1 ' ouvre le fichier en lecture canal 1

Do Until EOF(1) ' EndOfFile devient vrai quand la fin du fichier est ateinte

Line Input #1, phrase ' met dans phrase la prochaine ligne du canal 1

phrases.Add phrase ' ajoute phrase a la suite dans la collection

Loop
'
boucle (jusqu'a ce que la fin du fichier soit ateinte)

Close #1 ' ferme le canal1

End Sub
0
Rejoignez-nous