Remettre les mots d'une phrase dans l'ordre. [Résolu]

alex10gs 5 Messages postés vendredi 4 mars 2005Date d'inscription 20 novembre 2006 Dernière intervention - 4 mars 2005 à 22:30 - Dernière réponse : cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention
- 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
Afficher la suite 

8 réponses

Meilleure réponse
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 5 mars 2005 à 01:11
3
Merci
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?

Merci cqui789 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Meilleure réponse
cs_Warning 517 Messages postés samedi 3 février 2001Date d'inscription 24 octobre 2006 Dernière intervention - 6 mars 2005 à 09:31
3
Merci
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/

Merci cs_Warning 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 6 mars 2005 à 15:58
0
Merci
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
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 6 mars 2005 à 16:17
0
Merci
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
alex10gs 5 Messages postés vendredi 4 mars 2005Date d'inscription 20 novembre 2006 Dernière intervention - 6 mars 2005 à 18:46
0
Merci
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.
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 6 mars 2005 à 19:49
0
Merci
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.
alex10gs 5 Messages postés vendredi 4 mars 2005Date d'inscription 20 novembre 2006 Dernière intervention - 7 mars 2005 à 19:25
0
Merci
merci, mais comment je fais pour lier le fichier texte au tableau?????
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 7 mars 2005 à 20:30
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.