SALUT A TOUS!
svp, aidez moi a transformer ce programme écris en PASCAL en C
____________________
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
program serie2exo8;
uses crt;
{declaration des types et variables}
type liste=^element;
     element=record
     pri:integer;
     val:string;
     suiv:liste;
     end;
	 var l,lp:liste;
choix:char;
prio,dp:integer;
vale,dv:string;
{creation delement pour ajouter}
procedure creation(var e:liste;pri:integer;val:string);
begin
new(e);
e^.pri:=pri;
e^.val:=val;
end;
{affichage de liste}
procedure affichage(l:liste);
var q:liste;
begin
q:=l;
while(q<>nil) do begin
writeln('Priorite:> ',q^.pri);
writeln('Valeur => ',q^.val);
q:=q^.suiv;
end;
end;
{emfiler insert en queu}
procedure emfiler(var l:liste;var pe:integer;var ve:string);
var e,q:liste;
begin
creation(e,pe,ve);
if (l=nil) then l:=e
else begin
q:=l;
while(q^.suiv<>nil)do q:=q^.suiv;
q^.suiv:=e;
end;
end;
{defiler sup de la tete}
procedure defiler(var l:liste;var pd:integer;var vd:string);
var q:liste;
begin
q:=l;
l:=l^.suiv;
q^.suiv:=nil;
pd:=q^.pri;
vd:=q^.val;
dispose(q);
end;
{empiler insertion en tete}
procedure empiler(var l:liste;var pe:integer;var ve:string);
var e,q:liste;
begin
creation(e,pe,ve);
if (l=nil) then l:=e
else begin
e^.suiv:=l;
l:=e;
end;
end;
{depiler sup de la tete}
procedure depiler(var l:liste;var pd:integer;var vd:string);
var q:liste;
begin
q:=l;
l:=l^.suiv;
q^.suiv:=nil;
pd:=q^.pri;
vd:=q^.val;
dispose(q);
end;
 
{maxpri}
procedure maxpri(l:liste;var pm:integer;var vm:string);
var q,x:liste;
begin
q:=l;
x:=l;
while(q<>nil) do begin
if((q^.pri)>(x^.pri))then x:=q;
q:=q^.suiv;
end;
pm:=x^.pri;
vm:=x^.val;
end;
 
{defiler par prioriteX XX}
procedure defilerpri(var l:liste;var pd:integer;var vd:string);
var q,ls,t:liste;
vs:string;
ps:integer;
begin
ls:=nil;
maxpri(l,pd,vd);
while((l^.pri<>pd)and(l^.val<>vd)) do begin
defiler(l,ps,vs);
empiler(ls,ps,vs);
end;
if((l^.val=vd)and(l^.pri=pd)) then defiler(l,pd,vd);
if (ls<>nil) then repeat
depiler(ls,ps,vs);
empiler(l,ps,vs);
until(ls=nil);
end;
 
{program principal}
 
begin
clrscr;
l:=nil;
lp:=nil;
choix:='y';
writeln('>L ELEMENT LE PLUS PRIORITAIRE EST CELUI QUI A LA PRIORITE LA PLUS SUPERIEUR<');
writeln;
while(choix<>'n')do begin;
writeln('Entrer la valeur(un caractere):');
readln(vale);
writeln('Entrer la priorite(un entier):');
readln(prio);
emfiler(l,prio,vale);
writeln('Voulez vous ajoutez un element?: (y/n)');
readln(choix);
end;
writeln;
writeln('LA LISTE DES ELEMENTS CREES');
affichage(l);
writeln;
writeln('LISTE DES ELEMENTS AVEC LA PRIORITE CROISSANTE');
repeat
defilerpri(l,dp,dv);
empiler(lp,dp,dv);
until (l=nil);
affichage(lp);
readln;
end.