Probléme dans le resultat

Résolu
sadfiadnen Messages postés 3 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 26 avril 2011 - 26 avril 2011 à 19:39
sadfiadnen Messages postés 3 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 26 avril 2011 - 26 avril 2011 à 23:57
salut j ai un exercice qui demande
de créer une application VB qui permet de lire les notes de chaque étudiant à partir
d’un fichier séquentiel «Notes.txt», de calculer sa moyenne et de déterminer sa
mention qui vont être stockés avec le nom et le prénom de chaque étudiant dans un
fichier séquentiel «Resultas.txt». Le nom et le prénom de chaque étudiant sont stockés
dans un autre fichier séquentiel «Etudiants.txt».
Le fichier Etudiants.txt a la structure suivante :
Novak Djokovic
Andy Roddick
Rafael Nadal
Roger Federer
Andrew Murray
Chaque ligne du fichier contient: le prénom et le nom de l’étudiant séparés par des
espaces. (Les valeurs sont séparées par un seul espace).
Le fichier Notes.txt a la structure suivante :
10.50 09.00 14.25 07.00 11.75
06.50 08.75 10.50 09.00 12.25
14.00 17.25 13.50 12.00 11.00
14.50 16.00 15.75 17.75 14.00
09.75 11.00 08.00 11.50 07.00 Faculté des Sciences Economiques et de Gestion de Tunis
2
ème
Licence Fondamentale en Informatique de Gestion
TP : Environnement de développement

3

Chaque ligne n° i du fichier «Notes.txt» contient les cinq notes (séparés par des espaces)
de l’étudiant n° i du fichier «Etudiants.txt». (Les valeurs sont séparées par un seul
espace).
Les résultats seront stockés dans le fichier Resultats.txt dont la structure est la suivante:
Novak Djokovic 10.50 Passable
Andy Roddick 09.40 Echec
Rafael Nadal 13.55 AssezBien
Roger Federer 15.60 Bien
Andrew Murray 09.45 Echec
Chaque ligne du fichier contient: le prénom, le nom, la moyenne et la mention de
l’étudiant séparés par des espaces. (Les valeurs sont séparées par un seul espace).
----------------------------------------------------------------------------------------------------------------------
ma solution
Private Sub cd1_Click()
cdlg.ShowOpen
Nomf1.Text = cdlg.FileName
End Sub

Private Sub cd2_Click()
cdlg.ShowOpen
nomf2.Text = cdlg.FileName
End Sub

Private Sub cd3_Click()
cdlg.ShowSave
nomf3.Text = cdlg.FileName
End Sub

Private Sub cd4_Click()
Dim i As Integer
Dim M As String
Dim L As String
Dim p As String
Dim s As Double
Dim moy As Double
Dim Tnote() As String
Dim Tres(3) As String
Dim Tnom() As String
Open Nomf1.Text For Input As #1
Open nomf2.Text For Input As #2
Open nomf3.Text For Append As #3
Do While ((Not EOF(1)))
Do While ((Not EOF(2)))

Line Input #1, L
Line Input #2, M
Tnote = Split(M)
s = 0
For i 0 To i 4
s = s + Val(Tnote(i))
Next i
moy = s / 5
If moy < 10 Then
p = "echec"
Else
If moy < 12 Then
p = "passable"
Else
If moy < 15 Then
p = "assez bien"
Else
p = "bien"
End If
End If
End If
Tres(0) = L
Tres(1) = CStr(moy)
Tres(2) = p

Print #3, Tres(0),
Print #3, Tres(1),
Print #3, Tres(2)
Loop
Loop
Close #1
Close #2
Close #3





End Sub
mais lors de l execution les resultats de la moyenne ne sont pas juste et le nbr de tabulation dans le fichier resultat n'est pas correcte
de l aide svp

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2011 à 23:22
Le Ctrl-F5 n'a pas pour but de rendre tes résultats plus justes. C'est juste que, en VB, la syntaxe
For i 0 To i 4
n'est pas correcte : il faut la corriger (voir l'aide)

Bah si tu débogues, tu suivras ce que valent tes variables et tu sauras pourquoi le calcul n'est pas bon.

Non, les tabulations sont là, mais selon l'éditeur que tu utilises pour visualiser les données, tu vois un décalage, mais c'est normal.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2011 à 21:23
Salut

Apprends à déboguer pour suivre ce que ton application fait.
Tu trouveras ainsi facilement les erreurs et autres anomalies :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2011 à 21:29
PS : Si tu ouvres et lis deux fichiers en même temps, tu vas au devant de surprise car si les deux fichiers n'ont pas le même nombre de lignes (exemple le premier à moins de lignes), tu vas vouloir lire au delà de la fin de fichier (puisque le fichier 2 n'est pas épuisé) et cela provoquera une erreur.
Dans ce genre de lecture de fichier, mieux vaut lire les fichiers indépendamment, quitte à stocker les valeurs dans un tableaux pour pouvoir les retravailler ensuite.

For i 0 To i 4
n'est pas une syntaxe valide.
Lance ton application avec Ctrl-F5 au lieu de F5 pour compiler et trouver ce genre d'erreur avant de tomber dessus lors du déroulement du programme

La prochaine fois que tu colles du code, utilise la coloration syntaxique (3eme icône à droite) = plus facile à lire/comprendre/dépanner. Là, j'ai pas le courage de tout lire à cause de ça.
0
sadfiadnen Messages postés 3 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 26 avril 2011
26 avril 2011 à 22:41
merci pour vous

mais j ai pas compris comment deboguer
et j ai fait avec le Ctrl-F5 et voila le resultat finale

Novak Djokovic 2,1 echec
Andy Roddick 3,4 echec
Rafael Nadal 6,2 echec
Roger Federer 9,1 echec
Andrew Murray 11,05 passable
les moyennes sont fausses et il y a un probléme de tabulation
0

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

Posez votre question
sadfiadnen Messages postés 3 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 26 avril 2011
26 avril 2011 à 23:57
merci beaucoup pour vous
j ai corriger le syntaxe du boucle for et maintenant il fonctionne merci une autre fois
0
Rejoignez-nous