Pascal vers c

cc -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
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
Configuration: Windows XP
Safari 525.27.1

8 réponses

  1. ixtobilly
     
    C'est possible oui. Mais en ma connaissance, tu devras le faire manuellement, le Pascal et le C étant assez différents.
    0
    1. cc
       
      si je pose mon programme en pascal es que tu peut m aider a le traduire
      0
      1. ixtobilly > cc
         
        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
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Je peut t'aider, mais pas envie de tout faire à ta place.
    Mets là ou tu bloques.
    0
    1. cc
       
      sayé je l ai posté mon frere
      0
  3. cc
     
    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
  4. cc
     
    remarque : j ai corrigé le programme principale
    (*********************principale*****************)
    begin
    saisir;
    tri;
    gantt;
    attente;
    tps;
    end.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cc
     
    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
  7. cc
     
    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
  8. Jamian
     
    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
  9. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Heu... Tu as fait quoi au juste ? je voi mal la différence entre tes truc, et en plus c'est vachement long !
    0