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

Autres IDE Pascal Discussion :

Tableau d'enregistrement de tableau d'enregistrement


Sujet :

Autres IDE Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Par défaut Tableau d'enregistrement de tableau d'enregistrement
    Bonjour,

    Je réalise un programme pour gérer un championnat de F1 ... Seulement un problème logique me vient.

    Je voudrais créer un tableau qui contient des équipes et pour chaque équipe définir un type pilote qui serait lui même un tableau de 1 à 2 de l'enregistrement pilote...

    En gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    TYPE pilote = record
          nom : integer;
          point : integer;
          end;
     
    VAR p : array[1..2] of pilote ;
     
    TYPE equipe = record
          nomequipe : char;
          pointequipe : integer;
          ....
          end;
     
    VAR tab : array [1..Nombreequipemax] of equipe ;
    Seulement lors ce que j'enregistre les points il y un problème : il ne me propose à chaque boucle que les deux derniers noms de pilotes enregistrés...

    A quoi cela peut-être dû ? Peut-on faire des tableaux d'enregistrement de tableau d'enregistrement ?

    Merci d'avance

    seb

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Jai,

    En cette période de fêtes, les boules de cristal sont en pleine migration.

    Non, sans blague, comment veux-tu qu'on puisse t'aider si tu ne nous montres pas ton code ?

    Tu penses qu'on peut le deviner juste en regardant l'écran ?

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Par défaut
    hey hey ... c'est peut-être mieux comme ça

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    program ChampionnatDeF1; {Degrève Sébastien 1TL1}
     
    uses crt;
     
    CONST Nbequipe = 3;
          nMinc = 1;
          nMaxc = 3;
     
    TYPE pilote = record
         point : integer;
         nom : string;
         end;
     
    var p : array[1..(2*Nbequipe)] of pilote;
     
    TYPE equipe = record
         p : pilote;
         point : integer;
         nom : string;
         end;
     
    VAR tab : array[1..Nbequipe] of equipe;
        i_pilote : array [1..(2*Nbequipe)] of integer;
        i_constructeur : array [1..Nbequipe] of integer;
        choix : char;
        cpt : integer;
     
    procedure encode_e;
    var i,j: integer;
              begin
              ClrScr;
              writeln('Encodages equipes et pilotes');
              writeln('----------------------------');
              writeln();
                   for i:=1 to Nbequipe do
                       begin
                            writeln('Entrez le nom du constructeur ',i);
                            readln(tab[i].nom);
                            for j := 1 to 2 do
                                begin;
                                      writeln('pilote ',j);
                                      readln(tab[j].p.nom);
                                end;
                            writeln();
                       end;
              end;
     
    procedure encode_p;
    var i,j,a,t: integer;
              begin
              cpt := cpt+1;
              writeln('Encodage point  ');
              writeln('----------------');
                   for i:=1 to Nbequipe do
                       begin
                            ClrScr;
                            writeln('Equipe : ',tab[i].nom);
                            for j := 1 to 2 do
                                begin;
                                      writeln('pilote ',j,' ',tab[j].p.nom);
                                      readln(t);
                                      tab[j].p.point := tab[j].p.point + t;
                                end;
                            writeln();
                       end;
              end;
     
    procedure classement_c;
    var i,j,tampon: integer;
              begin
              ClrScr;
              writeln('Classement des constructeurs');
              writeln('----------------------------');
              writeln();
              for i := 1 to Nbequipe do
                  begin
                       tab[i].point := tab[1].p.point + tab[2].p.point;
                  end;
                   if cpt > (nMINc) then
                      begin
                           if cpt < (nMAXc) then
                              begin
                                   for i:=1 to Nbequipe-1 do
                                       begin
                                            for j:=i+1 to Nbequipe do
                                                begin
                                                     if tab[i].point >tab[j].point then
                                                        begin
                                                             tampon := i_constructeur[i];
                                                             i_constructeur[i] := i_constructeur[j];
                                                             i_constructeur[j]:= tampon;
                                                        end;
                                                end;
                                        end;
                                   for i:=1 to Nbequipe do
                                       writeln(' ',i,'. ',tab[i_constructeur[i]].nom,' avec',tab[i_constructeur[i]].point);
                              end;
                           if  cpt > (nMAXc) then writeln('Trop de courses championat non valide');
                      end;
                   if cpt < (nMINc) then writeln('Pas assez de de courses championat non valide');
              readln;
              end;
     
    procedure classement_p;
    var i,j,tampon: integer;
              begin
              ClrScr;
              writeln('Classement des pilotes');
              writeln('----------------------');
              writeln();
                   if cpt > (nMINc) then
                      begin
                           if cpt < (nMAXc) then
                              begin
                                   for i:=1 to ((2*Nbequipe)-1) do
                                       begin
                                            for j:=i+1 to (2*Nbequipe) do
                                                begin
                                                     if tab[i].p.point >tab[j].p.point then
                                                        begin
                                                             tampon := i_pilote[i];
                                                             i_pilote[i] := i_pilote[j];
                                                             i_pilote[j]:= tampon;
                                                        end;
                                                end;
                                        end;
                                   for i:=1 to Nbequipe do
                                       writeln(' ',i,'. ',tab[i_pilote[i]].p.nom,' avec',tab[i_pilote[i]].p.point);
                              end;
                           if  cpt > (nMAXc) then writeln('Trop de courses championnat non valide');
                      end;
                   if cpt < (nMINc) then writeln('Pas assez de courses championnat non valide');
              readln;
              end;
     
    Procedure menu;
              begin
                   writeln(' MENU CHAMPIONNAT F1');
                   writeln(' -------------------');
                   writeln();
                   writeln(' 1. Encodage equipe');
                   writeln(' 2. Encodage point course');
                   writeln(' 3. Classement constructeur');
                   writeln(' 4. Classement pilote');
                   writeln('');
                   writeln(' 0. quitter');
                   writeln('');
                   write(' choix :');
              end;
     
    begin
         repeat
               ClrScr;
               menu;
               readln(choix);
               case choix of
               '1' : begin
                          encode_e;
                     end;
               '2' : begin
                          encode_p;
                     end;
               '3' : begin
                          classement_c;
                     end;
               '4' : begin
                          classement_p;
                     end;
               end;
         until choix = '0';
         ClrScr;
         writeln();
         writeln('Good Bye');
         readln;
    end.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hai,

    Code indenté, c'est bien, mais il ne faut pas mettre un trop grand décalage à chaque niveau, ça ne fait que disperser l'attention sur l'écran.
    Personnellement, je mets 2 espaces à chaque niveau, je trouve que c'est suffisant pour être visible sans avoir à forcer l'attention
    Bien sûr, c'est une préférence tout à fait personnelle, mais les décalages le plus souvent utilisés sont 2 ou 4 espaces par niveau.

    Et leitmotiv : les variables globales sont à proscrire : une procédure/fonction doit recevoir en paramètres toutes les données dont elle a besoin (à l'exception des constantes).

    Sinon, je n'ai pas le temps tout de suite, on verra demain.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Leo,

    Désolé, j'avis oublié le sujet.

    Pour rester honnête, ton code est un grand foutoir, tes types définissent n'importe quoi... et déjà dit, mais on ne le répètera jamais assez : proscrire les variables globales...

    Sinon, relis et exécute manuellement ton programme quand tu veux "encoder une équipe".

    Ça signifie : suis l'exécution de ce que le programme fait réellement, en suivant le code ligne à ligne, pas ce que tu penses qu'il fait !!

    Ça te mettra déjà sous les yeux des trucs qui ne vont absolument pas dans tes types.

Discussions similaires

  1. [D2007, ADO, MSACCESS]Comment enregistrer un tableau grande taille ?
    Par colorid dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/07/2007, 18h39
  2. Comment enregistrer un tableau en session
    Par Snyfer dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2007, 11h48
  3. Enregistrer un tableau de caractéres
    Par pacsems dans le forum Delphi
    Réponses: 14
    Dernier message: 03/02/2007, 21h41
  4. Enregistrer un tableau d'objet
    Par MicroPuce dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/11/2006, 09h54
  5. enregistrer un tableau dans un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2006, 14h10

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