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
| PROGRAM principal;
//-----------------------------------------------STRUCTURE VOITURE-------------------------------------------------------------------------------------//
TYPE t_voiture = record
marque : string[30];
modele : string[20];
carb : char;
annee : integer;
prix : integer;
end;
//----------------------------------------------------------------LISTE CHAINEE POUR MANIPULER LES INFOS DU FICHIER VOITURES.DAT-------------------------------------------//
type
Liste = ^Cellule;
Cellule = record
contenu: t_voiture;
suivant: Liste;
end;
//---------------------------------------------------------------VARIABLES PROGRAMME PRINCIPAL----------------------------------------------------------------------//
VAR
liste_voit : Liste;
//----------------------------------------------------------------PROCEDURE QUI CHARGE EN MEMOIRE LES VOITURES (DANS LA LISTE CHAINEE)-------------------------------------//
PROCEDURE charge_infos (VAR liste_voit: Liste); {sous programme de la question 1}
VAR
fichVoit : file of t_voiture;
infos : t_voiture;
BEGIN
Assign (fichVoit, 'voitures.dat');
Reset (fichVoit);
while not Eof(fichVoit) do
begin
Read(fichVoit,infos);
new(liste_voit);
liste_voit^.contenu.marque := infos.marque;
liste_voit^.contenu.modele := infos.modele;
liste_voit^.contenu.carb := infos.carb;
liste_voit^.contenu.annee := infos.annee;
liste_voit^.contenu.prix := infos.prix;
liste_voit := liste_voit^.suivant;
end;
END;
//----------------------------------------------------------------PROCEDURE AFFICHANT A L'ECRAN LES VOITURES DISPO A LA VENTE-----------------------------------------------//
{sous programme de la question 2}
PROCEDURE affiche_voitures (VAR liste_voit: Liste);
BEGIN
while (liste_voit <> nil) do
begin
writeln(liste_voit^.contenu.marque);
writeln(liste_voit^.contenu.modele);
writeln(liste_voit^.contenu.carb);
writeln(liste_voit^.contenu.annee);
writeln(liste_voit^.contenu.prix);
liste_voit := liste_voit^.suivant;
end
END;
//--------------------------------------------------------PROCEDURE AFFICHANT LE NOMBRE DE VOITURES EN FONCTION DU CARBURANT---------------------------------------------//
{sous programme de la question 3}
FUNCTION nombre_carb_recur (carb: char; liste_voit: Liste): integer;
BEGIN
if (liste_voit = nil) then
nombre_carb_recur:=0
else
if (liste_voit^.contenu.carb = carb) then
nombre_carb_recur := 1 + nombre_carb_recur(carb, liste_voit^.suivant)
else
nombre_carb_recur := nombre_carb_recur(carb, liste_voit^.suivant);
END;
//----------------------------------------------------------FONCTION AFFICHANT L'ANNEE ET RENVOIT L'ADRESSE MEMOIRE D'UN VEHICULE-----------------------------------------//
{sous programme de la question 4}
FUNCTION annee_adresse(liste_voit: Liste): string;
VAR
adr : string;
annee : integer;
BEGIN
annee:=liste_voit^.contenu.annee;
while(liste_voit <> nil) do
begin
if(liste_voit^.contenu.annee < (liste_voit^.suivant)^.contenu.annee) then
begin
annee := (liste_voit^.suivant)^.contenu.annee;
adr := liste_voit;
end
else
liste_voit := liste_voit^.suivant;
end;
annee_adresse:= adr;
writeln('L''année de fabrication du vehicule le plus recent : ', annee);
END;
//----------------------------------------------------------PROCEDURE QUI SUPRIMME L'ADRESSE DONNEE EN PARAMETRES -------------------------------------------------------//
{sous programme de la question 5}
PROCEDURE supprime_case_recur(adr: Liste; VAR liste_voit: Liste);
VAR
ptr: Liste;
BEGIN
if (liste_voit <> nil) then
if (liste_voit^.suivant = adr) then
begin
ptr := liste_voit;
liste_voit := liste_voit^.suivant;
dispose(ptr)
end
else
supprime_case_recur(adr, liste_voit^.suivant);
END;
//-------------------------------------------------------------------PROGRAMME PRINCIPAL----------------------------------------------------------------------------------//
BEGIN
charge_infos (liste_voit);
affiche_voitures (liste_voit);
END. |
Partager