Pascal vers c

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. Contributeur
    Heu... Tu as fait quoi au juste ? je voi mal la différence entre tes truc, et en plus c'est vachement long !
    0
    1. 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
      1. 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
        1. 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
          1. remarque : j ai corrigé le programme principale
            (*********************principale*****************)
            begin
            saisir;
            tri;
            gantt;
            attente;
            tps;
            end.
            0
            1. 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
              1. Contributeur
                Je peut t'aider, mais pas envie de tout faire à ta place.
                Mets là ou tu bloques.
                0
                1. sayé je l ai posté mon frere
                  0
              2. C'est possible oui. Mais en ma connaissance, tu devras le faire manuellement, le Pascal et le C étant assez différents.
                0
                1. si je pose mon programme en pascal es que tu peut m aider a le traduire
                  0
                2. @ccFranchement,

                  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