IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

[Débutant] Gestion d'un bulletin de notes


Sujet :

Pascal

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [Débutant] Gestion d'un bulletin de notes
    Bonjour à tous,
    Je suis nouveau sur ce site et débutant en Pascal. J'ai commencé il y a 4 mois uniquement sur ce site pour apprendre Pascal. J'enseigne aussi logiciel de base Word, Excel... dans un lycée technique après-midi.
    Mon objectif est d'éditer un bulletin de notes pour les élèves (nom, prénom, matricule, date de naissance puis l'ensemble des notes qui pourra determiner le résultat). Ci-dessous en Pascal mon code que j'ai essayé. S'il ya quelqu'un qui peut m'aider avec la correction ?

    Merci d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Program bulletin_de_note ;  
    Const Max = 90000 ;       // pour éviter le plus grand nombre dans le programme
    Type personne = record
    nom , prenom : string ;
    matricule : integer ;
    end ;
     
                    dates = record
                              jour, mois, annee : integer ;
                          end ;
     
    Tableau = array [1….Max] of  personne ;
    PTableau = ^Tableau ;
    var Tab : PTableau ;
    i : Integer ;
     
      procedure nombre_eleve (  var  N: Longint ; ) 
                i: Integer;
         begin 
             writeln  ( 'Combien de personnes ?' ) ;     // personne représente les élèves dans tout le programme
            readln (N);
            GetMem ( Tab , N  * Sizeof ( personne) ) ;
            for i:=1 to N  do readln (Tab^[i].nom ) ; 
            FreeMem  (Tab, N  * Sizeof ( personne ) ) ;
         end ;
     
    procedure eleve  ( var m: integer ;  )   //  pour enregistrer les info sur chaque eleve
                       Var i: integer;
       begin
             new (tab);
             with Tab^[1] do
             begin
                Nom := ‘ nom_eleve ’ ;
                 Prenom := ‘ prenom_eleve ’ ;
                 Matricule := numero_matricule  ;
                end ;
           for  i  := 1  to m do wiriteln  ( Tab^[i].nom ) ;
           dispose (Tab);
        end ;
     
    procedure date_naissance (var  m : integer ;  )    // permet d’insérer  la date  de naissance de chaq eleve
     
                      var i : integer  ;
                           begin
                         for  i := 1  to  m  do
                  begin
                      with t[i].date do
        begin
         writeln  ( `entree de la date` ) ;
         writeln  (`jour :` )  ;  readln ( jour ) ;
         writeln  (`mois : ` ) ;  readln (jour) ;
          writeln  (`annee : `) ;  readln (annee) ;
           writeln ( la date est ` : ` , jour , ‘ / ’, mois , ` / ` annee,  ) ;
           readln (date) ;
                                     end ;
                            end ;
                 end ;
     
    procedure resultat_eleve  ( var  m : real ;  )  // introduire les notes de chaque eleve puis déterminer  le resultat 
     
     type Nbr_matiere = array [ 1...20 ] of real ;
       var note :  Nbr_matiere ;
         i := integer ;
       somme, moyenne;
      begin
    writeln (  `entree ‘Nbr_matiere’ ‘ note ‘ )  ;
     for  i := 1  to m do
      readln (note);
      somme :=0
       moyenne := somme / nbr-matiere ;
        resultat := moyenne ;
    end .
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Soigner l'indentation du code aide grandement à s'y retrouver.

    Il y a tout d'abord pas mal d'erreurs de syntaxe, un minimum avant de poster du code est de s'assurer que celui-ci en est au maximum exempt. Mais passons.

    Ton tableau de 90000 enregistrements a une taille totale de 46 Mb. Le compilateur ne va pas être content : http://pascal.developpez.com/faq/?pa...ture-too-large

    Dans les procédures nombre_eleve et eleve, tu alloues le tableau Tab, travailles dessus puis tu le désalloues immédiatement. Il y a manifestement là un petit problème de logique.

    Une remarque en passant : il serait préférable de passer le tableau Tab comme paramètres à tes procédures, au lieu de faire référence à une variable globale au sein de celles-ci.

    Il y a sûrement d'autres problèmes mais je te laisse corriger au moins les erreurs de syntaxe de ton code actuel avant d'essayer de t'aider plus avant.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    ce code est un vrai champ de bataille. l' identation, l' utilisation des pointeurs, ... ont été fait au hazard.
    je crois que DesireGuel ne s' est pas donneé la peine de prendre une feuille et un crayon pour faire un brouillon.
    J' ai essayé de corriger l'identation et faire en sorte que le programme compile (je ne parle ici que des erreurs de syntaxe). Mais je n' ai pas touché à l' algorithme.
    Il faut encore énormement de travail pour que le programme puisse faire ce que tu veux. Aussi, je ne sais pas pourquoi tu cherches à utiliser un pointeur de tableau dans ce programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    Program bulletin_de_note ;
     
    Const Max = 100 ;
     
    Type
         dates = record
                   jour, mois, annee : integer ;
                 end ;
     
         personne = record
                     nom , prenom : string ;
                     matricule : integer ;
                     date : dates;
                    end ;
     
     
         Tableau = array [1..Max] of  personne ;
     
    var
        Tab : Tableau ;
        date:dates;
        nombreTotal : Integer ;  {nombre d' etudiant dans la classe}
     
    {-----------------------------------}
     
    procedure nombre_eleve (var  N: Longint);
      var   i: Integer;
    begin
      write  ( 'Combien de personnes ? ' ) ;
      readln (N);
      for i:=1 to N  do
       begin
        write('eleve ', i, ' : ');
        readln (Tab[i].nom ) ;
       end;
    end ;
     
    {--------------------------------------------}
     
    procedure eleve  (m: integer);
      var i: integer;
    begin
     for i:=1 to m do
     with Tab[i] do
      begin
       writeln('Nom : ', nom);
       write('prenom : ');
       readln(prenom);
       write('matricule : ');
       readln(matricule);
      end ;
    end ;
    {----------------------------------}
    procedure date_naissance ( m : integer );
     var i : integer  ;
    begin
     for  i := 1  to  m  do
      begin
       with tab[i].date do
        begin
         writeln  ( 'entree de la date') ;
         writeln  ('jour : ' )  ;  readln ( jour ) ;
         writeln  ('mois : ' ) ;  readln (mois) ;
         writeln  ('annee : ') ;  readln (annee) ;
         writeln ( 'la date est  : ',jour , ' / ', mois , ' / ', annee) ;
        end ;
      end ;
    end ;
     
      {---------------------------------}
    procedure resultat_eleve  (m : integer);
       var note :  real;
         i : integer ;
         somme, moyenne: real;
         nbr_matiere:integer;
    begin
     writeln('nombre matiere :');
     readln(nbr_matiere);
     writeln (  'entree note ' )  ;
     for  i := 1  to m do
      readln (note);
     somme :=0;
     moyenne := somme / nbr_matiere ;
     {resultat := moyenne ; }
    end ;
     
    {----------------------------------------------}
     
    Begin
    end.

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [Débutant] Gestion d'un bulletin de notes (suite)
    Jusqu'à cette heure je suis devant l'ecran entrain de reponde a Monsieur Alcatîz en reponse suite à son intervention pour essayer d'ameliorer mon code.
    Merci Darrylsite, c'est mon premier plus long programme que je voudrais initier . Mais je constate que mon niveau est tres bas encore s'il ya des conseilles ( pour mieux reussir un programme moyen en pascal n'hesitez pas ca va bcp m'aider)

    Aussi s'il ya d'autres idées sur les algo que je pourrais ajouter dites moi et je vais chercher pour essayer de completer ce code qui me restera comme exemple.

    Je vous remercie Alcatiz et Darrysite pour vos reponses

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Dai,

    Avant de vouloir ajouter quelque chose, je pense qu'il faut que tu retournes à tes cours de la base/syntaxe du langage, et que tu fasses quelques exercices plus simples que celui-ci, par exemple des petits programmes qui reprennent un à un tous les éléments du langage dont tu as besoin pour résoudre ton problème.

    Il ne sert à rien de vouloir courir avant de savoir marcher (celle-là, je la place assez souvent ).
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [Aide Correction] Gestion d'un bulletin de note
    Par leptitjej dans le forum Cas d'utilisation
    Réponses: 9
    Dernier message: 07/01/2013, 17h48
  2. [MCD] Gestion d'un bulletin de notes
    Par leptitjej dans le forum Schéma
    Réponses: 9
    Dernier message: 07/01/2013, 01h36
  3. [Turbo Pascal] [Débutant] Gestion des notes des élèves d'une classe
    Par bigamine5 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/02/2009, 11h26
  4. Gestion de bulletins de notes
    Par yacine77 dans le forum C
    Réponses: 7
    Dernier message: 24/05/2008, 17h56
  5. Création d'un logiciel de gestion des bulletins de notes de notre Lycée
    Par cheickssy dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 31/07/2006, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo