Traduction

Fermé
cc -  
 cc -
Bonjour,
aider moi a traduire ce programme pascal en language c

PROGRAM walid;
uses wincrt;
type pointeur=^ processus;

processus=record
nom:string;
priorite:integer;
dur_ex:integer;
date_arr:integer;
ta,tr:integer;
svt:pointer
end;
var
v:array[1..100]of string;
trouve:boolean;
f:text;
d,rep:string;
p,q,tete:pointeur;
compt,i,j,c,nb:integer;
(**************saisir********************************)
procedure saisir;
begin
tete:=nil;
i:=1;

writeln (' **********************"donner le nbre de processus" *********');
readln(nb);
for i:=1 to nb do
begin
writeln('***************************** "donner le nom du ',i,' processus" *******************');
new(p);
readln (p^.nom);
writeln('donner la priorité du processus');
readln (p^.priorite);
writeln('donner la d arrivéé du processus');
readln (p^.date_arr);
writeln('donner le temps d execution du processus');
readln (p^.dur_ex);
p^.svt:=tete;
tete:=p;

end;
writeln('=*************************** "otre saisie: oui / non :" ******************');
readln(rep);
if rep='oui' then
begin
repeat
writeln('***************************** "donner le nom du ',i,' processus" *******************');
readln (p^.nom);
writeln('donner la priorité du processus');
readln (p^.priorite);
writeln('donner la d arrivéé du processus');
readln (p^.date_arr);
writeln('donner le temps d execution du processus');
readln (p^.dur_ex);
p^.svt:=tete;
tete:=p;
writeln(' ************************"otre saisie: oui / non :" **************************' );
readln(rep);
until rep='non';
end;

end;

(*************************************procedure :tri de la liste*********************************)
procedure compter;
begin
p:=tete;
q:=p^.svt;
i:=1;
while q<>nil do
begin
i:=i+1;
compt:=i;
q:=q^.svt;
end;
end;

procedure tri;
begin
compter;
p:=tete;
q:=p^.svt;
j:=0;
trouve:=true;
for i:=1 to compt-1 do
begin
while (q<>nil) and (trouve=true) do
begin
if p^.priorite<q^.priorite then
begin
d:=p^.nom;
p^.nom:=q^.nom;
q^.nom:=d;
c:=p^.priorite;
p^.priorite:=q^.priorite;
q^.priorite:=c;
c:=p^.date_arr;
p^.date_arr:=q^.date_arr;
q^.date_arr:=c;
c:=p^.dur_ex;
p^.dur_ex:=q^.dur_ex;
q^.dur_ex:=c;
end
else if p^.priorite=q^.priorite then begin
if p^.date_arr>q^.date_arr then
begin
d:=p^.nom;
p^.nom:=q^.nom;
q^.nom:=d;
c:=p^.priorite;
p^.priorite:=q^.priorite;
q^.priorite:=c;
c:=p^.date_arr;
p^.date_arr:=q^.date_arr;
q^.date_arr:=c;
c:=p^.dur_ex;
p^.dur_ex:=q^.dur_ex;
q^.dur_ex:=c;
end;
end;

q:=q^.svt;
end;
begin
j:=j+1;
v[j]:=p^.nom;
p:=p^.svt;
q:=p^.svt;
if (q=nil) then begin
trouve:=false;
v[j+1]:=p^.nom;
end;
end;
end;
end;

(*******affichage du diagramme de gantt**********)
procedure gantt;
begin
writeln ('*** le diagramme de gantt ***');
for j:=1 to compt do
begin
write('| ',v[j],' |');
end;
writeln('|');
end;

(***********temp d attente**********)
procedure attente;
begin
p:=tete;
p^.ta:=0;
writeln('le temp d attente de ',p^.nom,' = ',p^.ta);
q:=p^.svt;
while (q<>nil) do
begin
q^.ta:=(p^.ta+p^.dur_ex);
writeln('le temp d attente de ',q^.nom,' = ',q^.ta);
p:=p^.svt;
q:=q^.svt;
end;
end;

(*************temps de restitution******)
procedure tps;
begin
p:=tete;
q:=p^.svt;
while (q<>nil) do
begin
p^.tr:=q^.ta;
writeln('le temps de restitution de ',p^.nom,' = ',p^.tr);
p:=p^.svt;
q:=q^.svt;
end;
p^.tr:=(p^.ta+p^.dur_ex);
writeln('le temps de restitution de ',p^.nom,'est ',p^.tr);
end;
(*********************principale*****************)
begin
saisir;
gantt;
attente;
tps;
end.
A voir également:

1 réponse

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Bonjour,*

S'il vous plaît
Merci
Au revoir
etc.
Sont monnaie courante quand on veut obtenir quelque chose !

Saine lecture...
A voir aussi

;-)

* Ne pas en tenir compte si présent dans le message initial, mais bon vu qu'il est ajouté automatiquement, ça ne fait pas de mal.
1
cc
 
la prochaine foi quand t bloqué fuat mieu se taire!!!!!!!!!!!
0