Demande d'aide en VB

jessico Messages postés 4 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 2 mai 2007 - 1 mai 2007 à 20:50
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 2 mai 2007 à 14:10
Bonjour tous le monde je suis pas trop une lumière en info j'aimerais faire un programme entièrement en VB de base pour la résolution de système de n d'équations à n inconnues par la méthode du pivot partiel de Gauss et capable de lire un fichier contenant des informations contenant des informations relatives à un système d'équations de résoudre le système par la méthode de gauss afficher les valeurs des inconnues.
si le nombre d'équation et d'inconnu est différent le programme devra afficher un message d'érreur.

Exemple du fichier à lire qui serait dans un fichier .txt

3, 3                                                                 nb d'équation, nb d'inconnues
3, 4, 5, 6                                                       3x+4y+5z =6
8, 9, 1, 2                                                       8x+9y+1z =2
4, 5, 6, 7                                                       4x+5y+6z=7
Enfin je tourne un peu en rond est ce que vous aurez des piste à medonner pour m'aider.
Merci d'avance.

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mai 2007 à 20:56
C'est bien du VB que tu veux ???
Si oui je déplace sur le bon forum.

ciao...
BruNews, MVP VC++
0
jessico Messages postés 4 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 2 mai 2007
1 mai 2007 à 20:57
oui c du VB
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 mai 2007 à 22:02
Avant d'aller plus loin :
Sais-tu le faire hors développement informatique (sur papier et avec un crayon) ?
Si oui : il te fait d'abord créer ton algorithme (une fois cet algorithme fait, on verra comment le transposer en code VB)
Si non : ce seront les méthodes mathématiques à appliquer qu'il te faudra avant tout "bûcher"...
0
jessico Messages postés 4 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 2 mai 2007
2 mai 2007 à 00:49
Je sais le faire dans les grandes lignes en buchant un peu j'en ai conclu ceci mais j'ai toujours des points que j'ai du mal à saisir en VB, et pour ce qui est de la méthode mathématique je la gère très bien.

il faut :

-que j'appel le fichier texte 
-je déclare les variable
-je déclare un tableau 2D : tab (nb equation, nb inconnue) ou je rentre les valeur du fichier texte (chose que j'ai beaucoup de mal)
-que j'affiche les équation saisies
-que je permute l'équation dont la valeur absolue est la plus grande avec la première ligne du système d'équation:

   -fonction valabso (n°de ligne) 
    for i=1 to nb inconnue
    résultat=0
    résultat=résultat +tab2(n°ligne, n° de colonne)
    résultat=résultat<sup>1/2
    </sup>return résultat
  
   -fonction valeur absolue max (N)
     valmax = 0
     indice = 0
     x = 0
     for i=n to nb equation
     x=val absolue (i)
     if val max <x
         val max = x 
         indice = i
         N=N+1  
    return indice

 -là il faut une fonction qui échange 2 ligne entre elles (on passe les 2 indices de lignes en argument) (on échange la ligne qui a la valmax la plus grande avec la premiére ligne du système)

On a val abs max (valeur absolue maximum) en ligne 1

-Ligne 1=L1
L1 =L1
L2=L2-(x2/x1)*L1..... donc pour les   nb equation   ligne on a à partir du tableau

for i = 2 to nb equation
    for j = 1 to nb inconnue
        tab(i,j)=tab(i,j)- (tab(i,i-1)/tab(i-1,i-1))*tab(i-1,j)

on a donc une matrice triangulaire au final qu'il faut faire à l'envers pour afficher la valeur de chaque inconnue et ensuite afficher les résulats.

Il y a d'autres problèmes que j'ai du mal à transcrire :
-Dans chaque ligne le dernier chiffre n'affiche pas une inconnue mais le résultat de l'équation
-je démarre les indice à partir de 1 et pas 0
-Pour la fin une fois qu'on a une matrice triangulaire je pense qu'il faut faire la même chose à l'envers mais pour l'affichage final des résultat aucune idée

Enfin voilà c'est tout ce que j'ai au final aprés avoir beaucoup buché.
0

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

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 mai 2007 à 09:10
Bon apparemment, tu as bien décomposer ton pb, c'est bien mais tu as un peu de code ou pas du tout ?

Pour la lecture de fichier, ca ne semble pas etre tres compliqué, faut juste aller chercher un peu sur VBFrance.
Pour le tableau, ca dépend si tu le veux en "code" ou sur une form (datagrid, msflexgrid ou autre). 
Ensuite, je comprend pas, tu veux des equations saisies ou celles du fichier texte.
Enfin pour l'algo, la transposition vers le code ne devrait pas etre trop dur.

D'ailleurs, si tu fais une recherche sur le forum, tu verras que tes camarades (je présume) ont posé des questions sur ce meme projet (genre définir le nbre de textbox suivant le nbre d'equations).

Je pense aussi que le nombre d'inconnues n'est pas utile car si je me souviens bien:
nb d'équation = nb d'inconnues

Quoiqu'il en soit, une recherche de tutos et de codes te seraient tres utilie. Maintenant si tu as un pb bien particulier, reposte ici (AVEC TON CODE si possible)  et on reprendra cela.

A+
0
jessico Messages postés 4 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 2 mai 2007
2 mai 2007 à 13:50
Je n'ai pas beaucoup voir peu de code car dès que je m'y met je m'embrouille car y'a plein de variable.
J'aimerais le tableau en code.
Et les équation sont celles du fichier texte mais comme dans l'exemple que j'ai mis au dessus :

Exemple du fichier à lire qui serait dans un fichier .txt
ce qui est écrit dans le fichier texte :                Ce que ça signifie :
3, 3                                                               nb d'équation, nb d'inconnues
3, 4, 5, 6                                                       3x+4y+5z =6
8, 9, 1, 2                                                       8x+9y+1z =2
4, 5, 6, 7                                                       4x+5y+6z=7

on a juste une liste de chiffre qu'il faut définir dans un tableau (et c'est là où je m'embrouille)
J'ai chercher sur le forum et j'avoue n'avoir pas trouvé des questions sur le même projet.
Je vais essayé de griffonner un code en ce qui me concerne.
Et merci pour l'aide.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 mai 2007 à 14:09
Alors tu vois moi non plus, je savais pas comment faire pour lire un fichier texte mais un simple coup d'oeil sur mon aide et voila ce que j'ai fais:

Dim fs, a
Dim ligne As String




Set fs = CreateObject("Scripting.FileSystemObject")
Set b = fs.OpenTextFile("C:\Documents and Settings\BorelNi\Bureau\fichiertest.txt", 1, 0)


ligne = b.Readline  'lire la première ligne et passe à la seconde
MsgBox ligne         'affichage
ligne = b.Readline  'lire la seconde ligne passe à la troisième
MsgBox ligne     


b.skipline          'Sauter la ligne


ligne = b.Readall   'Lire le fichier dans son ensemble à partir de la ligne courante
MsgBox ligne
b.Close             'Fermeture du fichier

Malheureusement c'est du VBA et pas du VB6 alors il y a peu etre des différences. Les membres pourront certainement corriger. Pour les ranger des un tableau, il va faloir que tu fasse des extractions de morceaux de la ligne.

La fonction Mid peut t'aider, ex :

ta_chaine = "TEST"
Mid(ta_chaine,3,2) va te donner 2 caractères à partir du caractère 3 soit "ST".

A partir de la tu devrais pour ranger tes infos dans un tableau.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 mai 2007 à 14:10
Au fait, n'oublie pas de modifier C:\Documents and Settings\BorelNi\Bureau\fichiertest.txt par le chemin du fichier qui t'intéresse.
0
Rejoignez-nous