Yuh
Messages postés7Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention 9 décembre 2006
-
8 déc. 2006 à 19:01
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 2009
-
9 déc. 2006 à 09:43
Bonjour,
J'essaie de faire un tableau en application console ou il y aurait 2 colonnes. la colonne de gauche va y avoir les classes et de droite le nombre d'eleve qui ont eu une note dans ses classes la, note part des etoiles.:
0-20 **
21-40 *
41-60
61-80
81-100
Voici le programme principale au quel j'aimerais ajouter un sous programme qui fais tel que demander en haut
Option Strict On
Option Explicit On
Imports System.console
Module modMain
Sub Main()
Dim nbElev As Integer
Dim elevSup As Byte = 0
Dim somme, echec, reussi As Integer
Dim moyen, max, note, note2 As Byte
max = 0
somme = 0
Dim elev, noteEtud(0) As Integer
WriteLine("Entrez le nombre d'étudiants :")
nbElev = CType(ReadLine(), Byte)
ReDim noteEtud(nbElev)
For elev = 1 To nbElev
WriteLine("Entrez la note de l'étudiant no. " & elev & " : ")
noteEtud(elev) = CType(ReadLine(), Integer)
somme = somme + noteEtud(elev)
If noteEtud(elev) > max Then max = CType(noteEtud(elev), Byte)
If noteEtud(elev) >= 60 Then
reussi = reussi + 1
Else
echec = echec + 1
End If
Next
moyen = CType(somme / nbElev, Byte)
WriteLine("La somme des notes : " & somme)
WriteLine("La moyenne des notes :" & moyen)
WriteLine("La note maximale :" & max)
WriteLine("Nombre de réussites:" & reussi)
WriteLine("Nombre d'échecs :" & echec)
For elev = 1 To nbElev
If noteEtud(elev) > moyen Then
elevSup = CType(elevSup + 1, Byte)
End If
Next
WriteLine("Nombre de notes supérieures à la moyenne: " & elevSup)
WriteLine("Entrez une note")
note = CType(ReadLine(), Byte)
WriteLine("Le nombre d'étudiant qui ont obtenu" & " " & note & " " & "est" & " " & nbFoisPresente(noteEtud, nbElev, note))
WriteLine("Entrez une note")
note2 = CType(ReadLine(), Byte)
Call notePresente(noteEtud, nbElev, note2)
ReadLine()
End Sub
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 9 déc. 2006 à 09:43
A mon avis tu n'as pas encore trés bien compris à quoi servent les variables et les tableaux .
Dans la classe que je t'ai donné, il ya une fonction
CompteNoteFourchette(noteinf As Double ,notesup As Double)
qui compte le nombre de notes dans une fouchette...
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 8 déc. 2006 à 20:23
Salut,
Il y aurait beaucou de chôses à dire sur ton prog, notamment qu'une approche "objet" t'aurait mené à creer une classe à part dans un fichier distinct qui aurait géré la partie "metier" de ton appli.
Sinon pour ta question :
new String("*",20) fabrique une chaine de vingt étoiles.
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 9 déc. 2006 à 00:02
Bonsoir,
Je me suis laché pour te pondre une petite démo avec des pratiques courrantes de programmation pour te permettre d'avancer.
Je n'ai pas implémenté la saisie au clavier...A toi de le faire !
Ci-dessous une petit Main() pour tester la classe et juste après la classe de gestion des notes qui te permet d'ajouter, enlever...des notes, d'enregistrer et charger tes listes de notes à partir d'un fichier texte et les fonctions statistiques que tu voulais implémenter.
Le main :
imports System
Module Main
Sub Main()
Dim promo As StatNotes
dim alea as integer
dim i as Integer
promo=New StatNotes("GammaKapaPi",60)
'Insertion aléatoire de notes pour le test
For i=1 To 100
alea=CType(rnd(1)*100,integer)+1
promo.Ajouter(CType(alea,Double))
Next
Console.WriteLine("Moyenne =" + promo.Moyenne.ToString())
Console.WriteLine("NoteMaxi="+promo.NoteMaxi.ToString())
'etc...
Console.WriteLine(promo.Enregistrer("c:\promo.txt"))
Console.WriteLine(promo.Charger("c:\promo.txt"))
Console.WriteLine("Moyenne =" + promo.Moyenne.ToString())
Console.WriteLine("NoteMaxi="+promo.NoteMaxi.ToString())
Console.WriteLine("NoteMini="+promo.NoteMini.ToString())
Console.WriteLine("Nombre de réussites ="+promo.CompteReussites.ToString)
For i=1 To 100 Step 20
Console.WriteLine("Nombre de notes comprises entre{0} et {1} = {2}",i,i+19,+promo.CompteNoteFourchette(i,i+19).ToString())
Next
Console.ReadLine()
End Sub
End Module
La classe de traitement (à coller dans un fichier 'statnotes.vb' à ajouter au projet)
'Une classe pour gerer les statistiques
'de base des résultats scolaires
imports System.IO
Public Class StatNotes
private const _VERSIONDUFICHIER as String ="StatNotes V1"
'En interne, gestion de la liste des notes sous forme de liste
Private _Notes as List(of double) 'en interne notre liste de notes
Private _NoteMinimale as Double 'La note minimale pour réussir
Private _Nom As String 'Le nom de la promo
'------------------------------------------------
Public Sub New(nomPromo as String,notemini as Double )
_Notes=new List(Of double)
Nom=nomPromo
NoteMinimale=notemini
End Sub
'-------------------------------------------------
'Côté public, la liste des notes est fournie sous forme
'd'un nouveau tableau de float.
'On peut aussi lui fournir un tableau de float contenant
'des notes qui viendra remplacer l'ancien
Public Property TableauDesNotes As double()
Get
return _Notes.ToArray()
End Get
Set(nouvelleListe() as Double)
if not nouvelleListe is nothing then
_Notes.Clear
_Notes.AddRange(nouvelleListe)
end if
End Set
End Property
'Renvoyer le nombre de notes enregistrées
Public ReadOnly Property NombreDeNotes As Integer
Get
return _Notes.Count
End Get
End Property
'Saisir ou obtenir la note minimale d'obtention de l'exam
Public Property NoteMinimale As Double
Get
return _NoteMinimale
End Get
Set(mini As Double)
If mini>0 Then
_NoteMinimale=mini
Else
_NoteMinimale=0
End If
End Set
End Property
Public Property Nom As String
Get
return _Nom
End Get
Set(leNomDeLaPromo As String)
If leNomDeLaPromo>"" Then
_Nom=leNomDeLaPromo
End If
End Set
End Property
Public ReadOnly Property NoteAuRang(idx As Integer) As Double
Get
If idx<NombreDeNotes Then
return _Notes.Item(idx)
End If
return -1
End Get
End Property
'Ajouter une note à la liste
Public sub Ajouter(note As Double)
_Notes.Add(note)
End Sub
'Effacer la note placée à un certain rang dans la liste
Public Sub Effacer(indexDeLaNote As Integer)
If indexDeLaNote<_Notes.Count Then
_Notes.RemoveAt(indexDeLaNote)
End If
End Sub
'Vider la liste
Public Sub Vider()
_Notes.Clear
End Sub
'Enregistre le nom de la classe et la liste de notes dans un fichier texte
Public Function Enregistrer(cheminCompletDuFichier As String) As Boolean
Dim Note as Double
'd'abord verifier si le chemin existe
if Directory.Exists(Path.GetDirectoryName(cheminCompletDuFichier)) then
'Manière "sécurisée" d'accéder à un fichier
Using strw As New StreamWriter(cheminCompletDuFichier,False,System.Text.Encoding.Default )
'Ecrire le type de fichier inventé perso pour l'occasion
strw.WriteLine(_VERSIONDUFICHIER)
'Ecrire le nom de la classe
strw.WriteLine(me.Nom)
'Ecrire la note d'obtention mini
strw.WriteLine(me.NoteMinimale.ToString )
'Ecrire les notes
For Each note In _Notes
strw.WriteLine(note.ToString )
Next
End Using
return true
End If
return false
End Function
'Charger un fichier
Public Function Charger(cheminCompletDuFichier As String) As Boolean
dim PasDerreurs as Boolean=true
if Directory.Exists(Path.GetDirectoryName(cheminCompletDuFichier)) then
'Manière "sécurisée" d'accéder à un fichier
Using strw As New StreamReader(cheminCompletDuFichier,true )
If Not strw.EndOfStream Then
'verifier que c'est un fichier à nous
if strw.ReadLine()=_VERSIONDUFICHIER then
'D'abord vider le fichier
Vider()
If Not strw.EndOfStream Then
Me.Nom=strw.ReadLine()
Me.NoteMinimale=Double.Parse(strw.ReadLine)
While Not strw.EndOfStream
'Si il lit autre chôse qu'un double
'il risque d'y avoir une erreur
try
Ajouter(Double.Parse(strw.ReadLine))
Catch ex As Exception
PasDerreurs=False
end try
End While
Else
pasDerreurs=False
end if
Else
pasDerreurs=False
End If
Else
PasDerreurs=False
end if
end Using
Else
pasDErreurs=false
end if
Return pasDErreurs
End Function
'-------------------Calculs------------------------------------
'Somme des notes
Public Function Somme() as Double
Dim lasomme As Double
Dim note As Double
For Each note In _Notes
lasomme+=note
Next
return lasomme
End Function
'Moyenne générale
Public Function Moyenne() As Double
If NombreDeNotes>0 Then
return Somme/NombreDeNotes
End If
return 0
End Function
Public Function NoteMini() As Double
Dim mini As Double=0
Dim note As Double
If NombreDeNotes>0 Then
mini=NoteAuRang(0)
For Each note In _Notes
if note<mini then mini=note
Next
End If
return mini
End Function
Public Function NoteMaxi() As Double
Dim maxi As Double=0
Dim note As Double
If NombreDeNotes>0 Then
maxi=NoteAuRang(0)
For Each note In _Notes
if note>maxi then maxi=note
Next
End If
return maxi
End Function
Public Function CompteReussites() As integer
Dim youpi As integer=0
Dim note As Double
If NombreDeNotes>0 Then
For Each note In _Notes
if note>=NoteMinimale then
youpi+=1
end if
Next
End If
return youpi
End Function
'Compte le nombre de notes comprises entre deux chiffres
Public Function CompteNoteFourchette(noteinf As Double ,notesup As Double) as Integer
Dim compte As Integer=0 ,note as Double
If NombreDeNotes>0 Then
For Each note In _Notes
if note>noteinf and note<=notesup then compte+=1
Next
End If
return compte
End Function
'Compte Notes Supérieures ou égales à la moyenne
Public Function CompteNotesSupMoyenne() As Integer
Dim maille As Double
Dim compteur As Integer =0
dim note as Double
maille=Moyenne()
If NombreDeNotes>0 Then
For Each note In _Notes
if note>=maille then compteur+=1
Next
end if
return compteur
End Function
End Class
En espérant t'avoir fait avancer, et du même coup d'autres débutants !!
Jcbé[^]
Yuh
Messages postés7Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention 9 décembre 2006 9 déc. 2006 à 01:04
Merci je suis en train de regarder ca ligne par ligne pour comprendre tout le codage mais c'est tres apprecie. Voici le codage de la meme chose mais pour une form windows :
Option Explicit On
Option Strict On
Imports System.Console
Public Class Compilation_des_notes_n_une_évaluation__partie_1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim etud As Integer
Dim somme As Short = 0
Dim moyen, reussi, echec As Double
Dim max As Byte = 0
moyen = somme / CType(nbEtud.Text, Double)
Dim tabNote(CType(nbEtud.Text, Integer)) As Integer
For etud = 1 To CType(nbEtud.Text, Integer)
Dim note As Integer = CType(InputBox("Entrez la note du" & " " & etud & "e étudiant", "Saisie d'une note"), Integer)
somme = somme + CType(note, Short)
tabNote(etud) = note
If tabNote(etud) > max Then max = CType(tabNote(etud), Byte)
If tabNote(etud) >= 60 Then
reussi = reussi + 1
Else
echec = echec + 1
End If
Next
End Sub
Public Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim cat As Short = CType(InputBox("Entrez le nombre de notes par catégorie", "Catégories"), Short)
Dim tabCat(CType((100 / cat) + 1, Integer)) As Integer
End Sub
End Class
J'essaie de faire fonctionner le boutton en bas pour qu'il affiche la categorie dans laquel les notes sont les plus presentes mais je sais pas vraiment quoi faire apres ca
Yuh
Messages postés7Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention 9 décembre 2006 9 déc. 2006 à 04:21
J'ai fais des modification et les etoiles sortent mais pas a la bonne place...
Public Sub afficherHistoNotes(ByVal tabElev() As Integer, ByVal histoNotesLu As Double, ByVal numElev As Integer)
Dim tabEtud(10) As Integer
Dim i As Byte
For i = 1 To numElev
Select Case tabElev(numElev)
Case 0 To 9
tabEtud(0) = tabEtud(0) + 1
Case 10 To 19
tabEtud(1) = tabEtud(1) + 1
Case 20 To 29
tabEtud(2) = tabEtud(2) + 1
Case 30 To 39
tabEtud(3) = tabEtud(3) + 1
Case 40 To 49
tabEtud(4) = tabEtud(4) + 1
Case 50 To 59
tabEtud(5) = tabEtud(5) + 1
Case 60 To 69
tabEtud(6) = tabEtud(6) + 1
Case 70 To 79
tabEtud(7) = tabEtud(7) + 1
Case 80 To 89
tabEtud(8) = tabEtud(8) + 1
Case 90 To 99
tabEtud(9) = tabEtud(9) + 1
Case 100
tabEtud(10) = tabEtud(10) + 1
End Select
Next
Console.WriteLine("0 à 9" & vbTab & New String("*", (tabEtud(0))))
Console.WriteLine("10 à 19" & vbTab & New String("*", (tabEtud(1))))
Console.WriteLine("20 à 29" & vbTab & New String("*", (tabEtud(2))))
Console.WriteLine("30 à 39" & vbTab & New String("*", (tabEtud(3))))
Console.WriteLine("40 à 49" & vbTab & New String("*", (tabEtud(4))))
Console.WriteLine("50 à 59" & vbTab & New String("*", (tabEtud(5))))
Console.WriteLine("60 à 69" & vbTab & New String("*", (tabEtud(6))))
Console.WriteLine("70 à 79" & vbTab & New String("*", (tabEtud(7))))
Console.WriteLine("80 à 89" & vbTab & New String("*", (tabEtud(8))))
Console.WriteLine("90 à 99" & vbTab & New String("*", (tabEtud(9))))
Console.WriteLine("100" & vbTab & New String("*", (tabEtud(10))))