Accueil     Soft. MacOSX     Soft. MacOS/PC     PHP     Python     ROMS GBA     TP d'info     DBZ-GT     Martingales     Galeries     Liens     @  

Exercice du TD9

program exercice_TD9;
const
nom = 'data_ex9';
type
liste = ^maillon;
type_elts = integer;
maillon = record
suivant: liste;
val: type_elts;
end;
type_fich = file of type_elts;

var
l: liste;
i: type_elts;
f: type_fich;
c: char;

function tirage (min, max: integer): integer;
{ Mac }
begin
tirage := min + Abs(Random) mod (max - min + 1);
end;
{ Fin de 'tirage' }

procedure creat_fichier (var f: type_fich);
{ Question C }
var
i: integer;
begin
for i := 1 to 10 do
write(f, tirage(0, 10));
close(f);
end;
{ Fin de 'creat_fichier' }

procedure init_liste (var l: liste);
begin
l := nil;
end;
{ Fin de 'init' }

function vide_liste (l: liste): boolean;
begin
vide_liste := (l = nil); { renvoie true si la liste est vide }
end;
{ Fin de 'vide_liste' }

procedure insere_tete_liste (elt: type_elts; var l: liste);
var
p: liste;
{ cliquer sur les pubs ! }
begin
p := l;
new(l);
l^.val := elt;
l^.suivant := p;
end;
{ Fin de 'insere_tete_liste' }

procedure parcours_liste (l: liste);
begin
if not vide_liste(l) then
begin
parcours_liste(l^.suivant);
writeln(l^.val : 3);
end;
end;
{ Fin de 'parcours_liste' }

procedure super_tete (var l: liste);
var
p: liste;
begin
if l = nil then
writeln('Votre liste est vide, impossible de supprimer la tete')
else
{ cliquer sur les pubs ! }
begin
p := l;
l := l^.suivant;
dispose(p);
end;
end;
{ Fin de 'super_tete' }

procedure supprime_liste (var l: liste);
begin
if l^.suivant = nil then
{ On doit donc remonter jusqu'au premier }
begin
supprime_liste(l^.suivant);
dispose(l);
{ cliquer sur les pubs ! }
end;
end;
{ Fin de 'supprime_liste' }

function longueur_liste (l: liste): integer;
{ non-demander pour le TP9 }
begin { On considere la liste non-nulle }
if vide_liste(l) then
longueur_liste := 0
else
begin
if l <> nil then
begin
if l = nil then
longueur_liste := 0
else
longueur_liste := 1 + longueur_liste(l^.suivant);
end;
end;
end;
{ Fin de 'longueur_liste' }

function dernier_liste (l: liste): liste; { non-demander }
begin
if vide_liste(l) then
dernier_liste := nil
else
begin
if l^.suivant <> nil then
dernier_liste := dernier_liste(l^.suivant)
else
dernier_liste := l;
end;
end;
{ Fin de 'dernier_liste' }

procedure inser_classe_elt_liste (i: type_elts; var l: liste);
var
p, r: liste;
begin
if vide_liste(l) then
begin
insere_tete_liste(i, l);
end
else if (l^.val > i) then
inser_classe_elt_liste(i, l^.suivant)
else
begin
new(p);
p^.val := l^.val;
l^.val := i;
p^.suivant := l^.suivant;
l^.suivant := p;
end;
end;
{ Fin de 'inser_classe_elt_liste' }

procedure supper_elt_liste (i: type_elts; var l: liste);
var
p, q: liste;
begin
if vide_liste(l) then
begin
writeln('Votre liste est vide.');
readln;
{ pause }
end
else if (l^.val > i) then
{ Rappel: la liste est triee }
begin
if l^.suivant <> nil then
supper_elt_liste(i, l^.suivant)
else
{ cliquer sur les pubs ! }
writeln('La valeur ', i : 2, ' n''est pas dans la liste');
end
else if (l^.val = i) then
begin
p := l^.suivant;
q := l;
l := p;
p := q;
dispose(p);
end;
end;
{ Fin de 'supper_elt_liste' }

function trouve_elt_liste (l: liste; i: type_elts): liste;
begin
if not vide_liste(l) then
if l^.val = i then
trouve_elt_liste := l
else
trouve_elt_liste := trouve_elt_liste(l^.suivant, i)
else
trouve_elt_liste := nil;
end;
{ Fin de 'trouve_elt_liste' }

function trouve_pos_elt_liste (l: liste; i: type_elts): integer;
begin
if (vide_liste(l^.suivant)) or (l^.val = i) then
begin
if l^.val = i then
trouve_pos_elt_liste := 1
end
{ cliquer sur les pubs ! }
else
trouve_pos_elt_liste := 1 + trouve_pos_elt_liste(l^.suivant, i);
end;
{ Fin de 'trouve_pos_elt_liste' }


procedure creat_liste_fichier (var f: type_fich; var l: liste);
{ question D }
{ var f: type_fich ici, le var est obligatoire sur Mac ! }
var
e: type_elts;
begin
while not eof(f) do
begin
read(f, e);
insere_tete_liste(e, l);
end;
close(f);
end;
{ Fin de 'creat_liste_fichier' }

procedure creat_liste_tri_fichier (var f: type_fich; var lt: liste);
{ question E }
{ var f: type_fich ici, le var est obligatoire sur Mac ! }
var
e: type_elts;
begin
while not eof(f) do
begin
read(f, e);
if vide_liste(l) then
insere_tete_liste(e, lt)
else
inser_classe_elt_liste(e, lt);
end;
close(f);
end;
{ Fin de 'creat_liste_tri_fichier' }

begin
writeln('TD9 http://www.Software-DS.com');
{ cliquer sur les pubs ! }
init_liste(l);

repeat
writeln('Veuillez saisir votre commande:');
writeln;
writeln(' a : créé un fichier avec des valeurs aleatoires');
writeln(' b : parcours_liste');
writeln(' c : creat_liste_tri_fichier');
writeln(' d : deletion');
writeln(' i : insertion');
writeln(' s : sortie');
readln(c);

case c of
'a':
begin
reset(f, nom);
rewrite(f); { Sur PC, faire: assign(f, nom); reset(f); }
creat_fichier(f);
end;

'b':
{ Affichage }
begin
parcours_liste(l);
end;

'c':
begin
reset(f, nom); { Sur PC, faire: assign(f, nom); reset(f); }
creat_liste_tri_fichier(f, l);
parcours_liste(l);
end;

'd':
{ Deletion }
begin
writeln('Quelle valeur voulez-vous retirer');
readln(i);
supper_elt_liste(i, l);
parcours_liste(l);
end;

'i':
{ Insertion }
begin
writeln('Indiquez la valeur a insere:');
readln(i);
inser_classe_elt_liste(i, l);
parcours_liste(l);
end;

's':
writeln('Au revoir...');
end;
until c = 's';

supprime_liste(l);

writeln;
writeln('©2001 All Rights Reserved to Software-DS.com');
{ ©2001 All Rights Reserved to http://www.Software-DS.com 04/12/01 }
end.





Haut de la page - Page précédente - Page générée en 0.01554 sec.
Recherche personnalisée
 

1843763 visiteurs.   ©2001-2023 All Rights Reserved to Software-DS.com
Made with a mac  
Confidentialité