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

Turbo Pascal Discussion :

Gestion des passagers d'une compagnie aérienne


Sujet :

Turbo Pascal

  1. #21
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    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
    program ahmed;
    const
    maxsiege=350;
    taillestring=10;
    type
     passager=record
                 nom:string[taillestring];
                 class:(eco,sky);
                 numsieger:1..maxsiege
               end;
    pointeur=^maillon;
    maillon=record
    val:passager;
    suiv:pointeur;
    end;
    var
    procedure cree(fichiervol:file of passager);
     
     Begin
    Assign (fichiervol, fichpass);
    Reset(fichiervol);
    Rewrite (fichiervol);
     Repeat
    Write('Name= ');
     readln (d.nom);
    Write('Class = ');
     readln (d.class);
    Write('NumSieger = ');
     readln (d.numsieger);
    close(fichiervol);
    End;
     
    ( // cette procedure(cree) charger les donnée de passager dans le fichier .... )
     
     
    procedure inser(tete:pointeur;v:passager);
    var
      p:pointeur;
    begin
      New(p);
      v:=AAAAAAAAAA
      p^.val:=v;
      p^.suiv:=tete;
      tete:=p
    end;
     
    ( // cette procedure (inser) ajout dans le maillon (tete)  de LLC la valeur v dans le champs de "nom" ..... )
    Donc problème : comment créer la procédure LISTECREATION pour créer une Liste Lineaire Chaînée, charger les maillons de cette LLC à partir du fichier dans une procédure telle que celle prévue au paragraphe :
    { Etap 1. Création de la liste chaînée correspondant au fichier original des passagers (FICHPASS).
    La procédure LISTECREATION effectue l'étape 1. Elle doit créer un nouveau maillon pour chaque enregistrement de passager. Elle doit renvoyer un pointeur, la tête de la liste (sur le premier enregistrement dont le champ NOM = 'AA...A'. }

  2. #22
    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
    Hum, tu n'as pas corrigé toutes les erreurs de syntaxe dans ton code.

    Dans ta procédure LISTECREATION, tu dois simplement lire chaque enregistrement du fichier et exécuter ta procédure inser en lui passant l'enregistrement lu comme paramètre. La procédure va affecter l'enregistrement au champ val du maillon.

    Au sujet de la procédure inser, que penses-tu faire avec la ligne :
    Tu reçois l'enregistrement contenant les données du passager comme paramètre (v). Tu l'affectes au nouveau maillon de la chaîne avec l'instruction
    Autre chose que je n'avais pas vue : après l'insertion d'un élément, la tête de la liste chaînée change. Or, tu n'as pas déclaré le paramètre tete avec la directive var !

    Venons à ta procédure cree :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Assign (fichiervol, fichpass);
    Reset(fichiervol);
    Rewrite (fichiervol);
    Le reset n'a pas de sens, puisque tu crées un nouveau fichier. La procédure assign permet d'assigner un fichier physique à une variable de type fichier.
    Si tu relis ton énoncé, FICHPASS est, justement, un fichier de type FICHIERVOL, dont tu dois faire la déclaration.
    Tu devrais alors avoir une instruction dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Assign(FICHPASS,'fich.dat');
    Pour finir, il faut bien entendu écrire chaque nouvel enregistrement dans le fichier, ce que tu ne fais pas !

    Il y a encore du boulot !
    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. #23
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    J'ai essayé avec cette procedure, est-ce correct ?

    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
    Procedure ListeCreation (var  tete:PointeurPass ;var FichPass:FichierVOl );
            var P , q : PointeurPass;
                h : string;
                A : Passager;
     
            Begin
                Writeln('Donnez le chemin de fichier Passager ( par example : C:\nom.txt ) : ');
                readln(heart);
                Assign(FichPass , h);
                reset(FichPass);
                new(tete);
                p := tete;
                While not eof(FichPass) Do
                    Begin
                        read(FichPass , A);
                        P^.Val.Nom := A.Nom;
                        P^.Val.Classe := A.Classe;
                        P^.Val.NumSiege := A.NumSiege;
                        new(q);
                        q^.Suivant := nil;
                        p^.Suivant := q;
                        p:=q;
                    end;
                    Close(fichPass);
            End;

  4. #24
    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
    Pourquoi n'utilises-tu pas ta procédure inser à l'intérieur de listecreation ? Il me semble que tu l'as créée pour cela, non ?

    Tu ne lis jamais tes MP ?
    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]

  5. #25
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    la procedure inser il est direct dans procedure listecreation Nous ne avons pas besoin d'eux procedure inser
    c'est l'aide de un amis esq est juste

  6. #26
    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
    Ce que je voulais dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Procedure listecreation (var tete : POINTEURPASS; var fichier : FICHIERVOL);
    { Lit le fichier et crée la liste des passagers }
    Var
    	Enregistrement : PASSAGER;
    Begin
    	tete := NIL;   { Liste chaînée vide }
    	Reset(fichier);
    	while not EOF(fichier) do
    		begin
    			Read(fichier,Enregistrement);
    			inser(tete,Enregistrement);
    		end;
    	Close(fichier);
    End;
    Mais si tu veux insérer le maillon dans la chaîne directement dans la procédure listecreation, tu n'as pas besoin de déclarer une variable de type passager, puisque, lorsque tu alloues ta variable dynamique, p^.Val est de type passager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read(FichPass , P^.Val);
    Il faut absolument revoir ton insertion, ça ne va pas : inspire-toi de ce que tu avais fait dans inser.

    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]

  7. #27
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    C'est ça juste .... ?

    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
    program ahmedov;
    const
    maxsiege=350;
    taillestring=10;
    type
    PASSAGER=record
    nom:string[taillestring];
    class:string;
    numsieger:1..maxsiege
    end;
    pointeurpass=^maillon;
     
    maillon=record
    valASSAGER;
    suivant:pointeurpass;
    end;
    fichiervol=file of PASSAGER;
    var
     
    procedure inser(tete:pointeur;vASSAGER);
    var
    p:pointeurpass;
    begin
    New(p);
    P^.Val.Nom := v.Nom;
    P^.Val.Classe := v.Classe;
    P^.Val.NumSiege := v.NumSiege;
    p^.suiv:=tete;
    tete:=p
    end;
    Procedure listecreation (var tete : POINTEURPASS; var fichpass : fichiervol);
     
    Var
    Enregistrement : PASSAGER;
    Begin
    tete := NIL; 
    Reset(fichpass);
    while not EOF(fichpass) do
    begin
    Read(fichpass,Enregistrement);
    P^.Val.Nom := Enregistrement.Nom;
    P^.Val.Classe := Enregistrement.Classe;
    P^.Val.NumSiege := Enregistrement.NumSiege;
    inser(tete,Enregistrement);
    end;
    Close(fichier);
    End

  8. #28
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    apres l'aide de mes amis j'ai trouve une solution mes dans l'exécution na pas exciter !!!!

    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
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
     
    Program maintenir;
     
    uses crt;
     
    const
    	FIN = 5;
    	MAXSIEGE = 350;
    	TAILLESTRING = 10;
    type
    	PASSAGER = record
    			NOM : string[TAILLESTRING];
    			CLASSE:(eco,sky);
    			NUMSIEGE:1..MAXSIEGE
    	end;
    	FICHIERVOL = file of PASSAGER;
     
    	POINTEURPASS = ^MAILLONPASS;  {maillon de la liste des passagers}
     
    	MAILLONPASS = record
                        passager : PASSAGER; {champ record de passager}
    	            suivant : POINTEURPASS
    	end;
    var
    	tete: POINTEURPASS;
    	FICHPASS,NOUVFICHPASS: FICHIERVOL;
    	choix: INTEGER;
     
    	{declaration de procedures}
     
    	procedure LISTECREATION(var FICHPASS : FICHIERVOL; var tet:POINTEURPASS);
    	var p,q:POINTEURPASS ;
                v :PASSAGER;
    	begin
                assign(FICHPASS,'E:\FICHPASS.dat');
                reset(FICHPASS);
                new(tet);
    			p := tet;
     
     
                while not EOf(FICHPASS) do
    	          begin
    				read(FICHPASS, v);
    				p^.passager.NOM := v.NOM;
    				p^.passager.CLASSE := v.CLASSE;
                    p^.passager.NUMSIEGE := v.NUMSIEGE;
    	            q := p;
    				new(p);
    				q^.suivant := p;
    		  end;
                    q^.suivant := nil;
     
    	    close(FICHPASS);
     
    	end;
    	{****************LISTCOPIER***********************}
     
    	procedure LISTECOPIER(tete: POINTEURPASS; var NOUVFICHPASS: FICHIERVOL);
    	begin
    		assign(NOUVFICHPASS,'E:\NOUVFICHPASS.dat');
    		Rewrite(NOUVFICHPASS);
    		while tete <> nil do
    			begin
    				write(NOUVFICHPASS,tete^.passager);
    				tete := tete^.suivant
    			end;
    		close(NOUVFICHPASS);
    	end;
     
     
    	{***************AFFICHERMENU*******************}
     
    	function AFFICHERMENU:INTEGER;
     
    		var c :integer;
    	begin
     
    			writeln('*************AIR ALGERIE*************');
    			writeln;
    			writeln('Saise votre choix:                  *');
    			writeln('1-Insertion                         *');
    			writeln('2-Suppression                       *');
    			writeln('3-Afficher Passager                 *');
    			writeln('4-Afficher la liste des passagers   *');
    			writeln('5-Quitter                           *');
    			writeln('*************************************');
                readln(c);
     
    		AFFICHERMENU := c;
    	end;
     
    	{*****************LISTMODE*****************************}
     
    	procedure LISTEMOD( var choix :INTEGER;  var tet:POINTEURPASS);
            var Ps : PASSAGER;
                s : string ;
    	procedure LIRE1PASS( var pass :PASSAGER);
    	begin
    		write('Introduire le nom de passager: ');
    		read(pass.NOM);
    		writeln('Introduire la class de passager: ');
    		write('eco / sky: ');
    		read(pass.CLASSE);
    		write('Introduire le numero du Siege de passager: ');
    		read(pass.NUMSIEGE);
     
    	end;  { Fin de procedure LIRE1PASS }
     
    	{********************INSERTION***************************}
     
    	procedure INSERTION( pass : PASSAGER; var tet:POINTEURPASS);
    		var p,q,r : POINTEURPASS;
    	begin
    	     p := tet;
     
                 while p^.passager.NOM  <  pass.NOM Do
     
                    begin
                         q := p;
                         p := p^.suivant
                    end;
     
    	     new(r);
    	    r^.passager.NOM := pass.NOM;
            r^.passager.CLASSE := pass.CLASSE;
            r^.passager.NUMSIEGE := pass.NUMSIEGE;
    	    q^.suivant := r; ;
    	    r^.suivant := p;
     
    	end;{ Fin de procedure INSERTION }
     
    	{***********AFFICHER LA LISTE DES PASSAGERS*************}
     
    	procedure AFFLISTEPASS(tet : POINTEURPASS );
     
    	begin
    		tet := tet^.suivant; { ce affectation pour n'afficher pas le maillon AAAAAAAAAA}
     
    	    while tet^.passager.NOM <> 'zzzzzzzzzz' do {se verification pour n'affiche pas le maillon zzzzzzzzzz}
    	           begin
    	                write(tet^.passager.NOM:10, tet^.passager.NUMSIEGE:10, tet^.passager.CLASSE:10);
    					tet := tet^.suivant;
    		        writeln;
    	           end
     
    	end;{ fin de procedure AFFLISTEPASS}
     
    	{******************LIRE NOM******************}
     
    	procedure LIRENOM(var s: string );
     
    	begin
    		read(s)
    	end;
     
    	{**************CHERCHE PASSAGER***************}
     
    	Function CHERCHEPASS(nom : String ; tet:POINTEURPASS): POINTEURPASS;
    		var p : POINTEURPASS;
                    trouve: boolean;
    	begin
                    trouve := false;
    		p := tet;
    		while (p <> nil) and (not trouve) do
    		begin
    			if p^.passager.NOM = nom then
                            begin
    				CHERCHEPASS := p;
                                    trouve := true
                            end
    			else
    				p := p^.suivant
    		end;
     
                  CHERCHEPASS := p
     
    	end; { Fin de procedure CHERCHPASS}
     
    	{*****************AFFICHER UN PASSAGER********************}
     
    	procedure AFF1PASS( nom : string);
    		var p : POINTEURPASS;
    	begin
    		p := tete;
     
    		while p^.passager.NOM <> nom Do
                          p := p^.suivant;
     
            writeln('Nom':10,'Sieges':10,'Classe':10);
    		writeln(p^.passager.NOM:10, p^.passager.NUMSIEGE:10, p^.passager.CLASSE:10);
            writeln;
     
    	end; { Fin de procedure AFF1PASS}
     
    	{******************SUPPRIMER**************************}
     
    	procedure SUPPRIMER(nom: string; var tet: POINTEURPASS);
    	var p,q: POINTEURPASS;
                supp: boolean;
    	begin
    		p := tet;
    		q := p;
            supp := false;
    		while (p <> nil) and (not supp) Do
                    begin
                         if p^.passager.NOM = nom then
                            begin
                                 q^.suivant := p^.suivant;
    		             dispose(p);
                                 supp := true
                            end
                         else
                             begin
                                  q := p;
    		              p := p^.suivant;
    		         end
                    end;
                    if supp = false then
     
    		   writeln(' le passager non truove');
     
    	end; { Fin de procedure SUPPRIMER}
     
     
    	begin { debut de procedure LISTEMMOD}
     
    		if choix in [1..5] then
    		case choix of
    			1:begin
    				writeln('Introduire les donnees pour un nouveau passager: ');
    				LIRE1PASS(Ps);
                                    clrscr;
    				INSERTION(Ps,tete);
    			end;
    			2:begin
    				writeln('Introduire le nom du passager a supprimer: ');
    				LIRENOM(s);
                                    clrscr;
    				SUPPRIMER(s,tete);
    			end;
    			3:begin
    				writeln('Introduire le nom de passager a afficher: ');
                                    LIRENOM(s) ;
    				if CHERCHEPASS(s,tete) = nil then
    					writeln('Passager non trouve!')
    				else
    					AFF1PASS(s)
    			end;
    			4:begin
    				writeln('La liste courante des passagers: ');
    				writeln('Nom':10,'Sieges':10,'Classe':10);
    				AFFLISTEPASS(tete);
    			end;
    			5:writeln('Fin mise a jour de la liste des passagers')
                            end
    	end; { Fin de procedure LISTEMMOD}
     
    	BEGIN {debut de programme principale}
     
    		LISTECREATION(FICHPASS,tete);
    		repeat
    			choix := AFFICHERMENU;
    			LISTEMOD(choix,tete);
     
    		until choix = FIN;
     
    		LISTECOPIER(tete,NOUVFICHPASS);
    		readln;
    	END. {fin de programme principale}

  9. #29
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    Quelqu'un répond pour le dernier message esq le code est marche ??

  10. #30
    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
    Un peu plus de commentaires dans le code source ?

    Au risque de me répéter, dans la procédure LISTECREATION, tu pourrais faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read(FICHPASS, p^.passager);
    Et je ne trouve pas très sain d'avoir un seul identificateur pour la variable passager et le type PASSAGER.

    Mais j'ai testé (avec Free Pascal sous Linux, pas avec Turbo Pascal), ça a l'air de tourner.
    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]

  11. #31
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    mes avec moi ca marche pas .. j'ai utilise turbo Pascal7.0 avec windows8.1

    photo d'erreur

    Nom : turbo psq.jpg
Affichages : 186
Taille : 157,4 Ko

  12. #32
    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
    Ah oui, le compilateur coince sur le fait que, contrairement à Free Pascal et autres compilateurs récents, sous Turbo Pascal, Read(Ln) et Write(Ln) ne peuvent lire ou afficher une variable de type énuméré.
    La solution est de lire le numéro d'ordre désiré, en sachant que le n° d'ordre du premier élément est 0.

    Cela nécessite de déclarer le type énuméré en dehors de l'enregistrement PASSAGER :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Type
      TCLASSE = (eco, sky);
      PASSAGER = record
                  ...
                  CLASSE : TCLASSE;
                  ...
               = end;
    La lecture devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var indice : byte;
     
    write('eco=0 / sky=1 : ');
    readln(indice);
    pass.CLASSE := TCLASSE(indice);
    Quelqu'un aura peut-être une autre solution plus élégante...
    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]

  13. #33
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    autre erreur

    Nom : erreurPasc.jpg
Affichages : 190
Taille : 130,1 Ko

    prq l'erreur tjr dans le variable CLASSE ?

  14. #34
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    Quelle est la solution dans cette erreur ....

  15. #35
    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
    Jea,

    Citation Envoyé par ahmadov47 Voir le message
    Quelle est la solution dans cette erreur ....
    C'est le même genre d'erreur que tu as donnée dans ton message #31, et dont Alcatîz t'a indiqué de quoi il s'agit.

    Un effort de ta part est nécessaire si tu veux progresser !
    Si les cons volaient, il ferait nuit à midi.

  16. #36
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    Oui je sais, droggo, mais le problème dans le dernier commentaire est différent de celui dans le message #31 parce que, chaque fois que je le corrige, il apparaît sous une autre forme sur la même variable CLASSE.
    SVP quelqu’un a-t-il une solution pour éviter ça ?

  17. #37
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    J'ai essayé avec Free Pascal est ça marche bien ... Enfin.
    J'ai un petit problème dans mon programme : lorsque vous insérez un passager cela ne s'enregistre pas, pourquoi ?

  18. #38
    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
    Citation Envoyé par ahmadov47 Voir le message
    Oui je sais, droggo, mais le problème dans le dernier commentaire est différent de celui dans le message #31 parce que, chaque fois que je le corrige, il apparaît sous une autre forme sur la même variable CLASSE.
    SVP quelqu’un a-t-il une solution pour éviter ça ?
    Un bricolage comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    case tet.passager.classe of
      eco : Write('eco');
      sky : Write('sky');
    end;
    peut contourner le problème.
    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]

  19. #39
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 0
    Points
    0
    Par défaut
    Merci Alcatîz ...... J'ai essuyez avec le Free Pascal est ça marche bien son des problèmes avec le variable CLASSE
    j'ai besoin un peu d'aide , dans ma programme quand j'ai entre un passager le programme ne sauvegarde pas ça ?
    SVP une solution pour cette erreur et merci .......

  20. #40
    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
    Citation Envoyé par ahmadov47 Voir le message
    quand j'ai entré un passager le programme ne sauvegarde pas ça ?
    SVP une solution pour cette erreur et merci .......
    Bizarre, je ne constate pas cette erreur. N'oublie pas que le programme crée un nouveau fichier ! Celui de départ n'est pas modifié. Fais l'expérience de supprimer l'ancien fichier et de renommer le nouveau : à l'exécution suivante du programme, les nouveaux passagers sont bien présents.
    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]

Discussions similaires

  1. Tomcat 5.5 ( gestion des privilèges d'une web app )
    Par mick72 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 03/09/2005, 06h54
  2. [Conception] Gestion des accents dans une base de données
    Par MiJack dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/07/2005, 11h41
  3. gestion des boutons d'une manette : relachement
    Par backfire dans le forum DirectX
    Réponses: 1
    Dernier message: 05/01/2005, 10h13
  4. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

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