Pascal vers c

Fermé
cc - 26 mai 2009 à 15:28
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 28 mai 2009 à 00:15
Bonjour,

j'ai un programme en pascal et j'aimerais pouvoir le convertir en C.

Est-ce possible déjà ?
Si oui y'a t'il des logiciels permettant de faire ca ou alors il faut le faire manuellement ?

merci
A voir également:

8 réponses

C'est possible oui. Mais en ma connaissance, tu devras le faire manuellement, le Pascal et le C étant assez différents.
0
si je pose mon programme en pascal es que tu peut m aider a le traduire
0
ixtobilly > cc
26 mai 2009 à 16:17
Franchement,

Avant, j'étais un champion, mais ça fait au moins 7 anc ke j'ai pas ouvert le moindre code C ou Pascal. Je ne programme d'ailleurs même plus. Je ne serai surement pas plus efficace que toi actu.
Je te suggère d'essayer toi même et si tu as des blocages particuliers, tu les poses pr kon cherche la solution.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
26 mai 2009 à 16:23
Je peut t'aider, mais pas envie de tout faire à ta place.
Mets là ou tu bloques.
0
sayé je l ai posté mon frere
0
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
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;
p:=tete;
while p<>nil do begin writeln(p^.nom);p:=p^.svt;end;
tri;
writeln('rrrr');
gantt;
attente;
tps;
end.
0
remarque : j ai corrigé le programme principale
(*********************principale*****************)
begin
saisir;
tri;
gantt;
attente;
tps;
end.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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;
p:=tete;
while p<>nil do begin writeln(p^.nom);p:=p^.svt;end;
tri;
writeln('rrrr');
gantt;
attente;
tps;
end.
0
voila le finale

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.
0
Réponse de théoricien : il suffit de coder en c une machine de Turing universelle et lui faire exécuter un compilateur Pascal :D

(pardon pour ce post inutile)
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
28 mai 2009 à 00:15
Heu... Tu as fait quoi au juste ? je voi mal la différence entre tes truc, et en plus c'est vachement long !
0