Pascal

Bonjour,

aider moi svp
partie01: transcodage

définition1 : on donne le nom de CODAGE à l'opération qui consiste à représenter dans un certain code (c) , les nombre donnée dans un systéme de numération décimal.

définition2 : on donne de nom de décodage à l'op^ération qui consiste à représenter dans le systéme de numération décécimal les nombres donnée dans un certain code (c) .

définition 3 : soient 2 codes c1 et c2 , on appelle TRANSCODAGE de C1 à C2 , l'opération consiste à déterminer la représentation dans le code (c2) de tout nombre dont on conait la représentation dans le code C1

Travail Demandé :Réaliser un programme qui permet d'effectuer

le codage des nombres dans un systéme de base B

le décodage d'un nombre représenté dans un systéme de base b .

le transcodage des nombre d'un systéme de base B vers un systéme de Base B

Partie 2:Représentation des information

les information traites par l'ordinateur sont de different types ; mais elles sont toujours représentées sous forme binaire .le codage d'une information consiste à établir une correspondance entre la représentation externe de l'information et sa représentation interne qui est une suite de bits

TRAVAIL DEMANDé: realiser un programme qui permet de représenter

un nombre entier en binaire pur,en binaire signé,en complément à 1 et a 2.

un nombre réel en virgule flottante simlpe précision.

un nombre réel en virgule flottante simple et précision format IEEE
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. Bonjour Komane,

    Je suis désolé de te répondre comme ça, mais pour ainsi dire personne ne te répondra car ici sur ccm les bénévoles ne sont pas la pour faire ton travail, mais plutôt pour pouvoir t'aider dans le cas où tu serais vraiment bloqué... Essaye de travailler un peu en fesant marcher ta cervelle, et si tu n'y arrives pas la tu pourras poser ta question...

    Excuse-moi si tu as mal pris ce que je viens de te dire mais une autre personne aurait pu te le dire ou te laisser dans l'ignorance.

    bonne journée

    Cordialement

    Titfofol
    1. program ex;
      uses wincrt;

      var
      n,b1,b2:integer;
      ch:string;

      function puis(x,n:integer):integer;
      var
      p,i:integer;
      begin
      p:=1;
      for i:=1 to n do
      p:=p*x;

      puis:=p;
      end;

      function conv_b_10(ch:string; b1:integer):integer;
      var
      x,e,s,i:integer;

      begin
      s:=0;

      for i:=1 to length(ch) do
      begin
      if ch[i] in['0'..'9'] then val(ch[i],x,e)
      else x:= ord(ch[i])-55;

      s:=s+(x*(puis(b1,length(ch)-i)));
      end;

      conv_b_10:=s;
      end;

      function conv_10_b(n,b2:integer):string;
      var
      ch,c:string;
      x:integer;
      begin

      ch:='';
      repeat
      x:=n mod b2;

      if x>=10 then c:=chr(x+55)
      else str(x,c);
      ch:=c+ch;
      n:=n div b2;
      until n=0;

      conv_10_b:=ch;
      end;

      begin
      writeln('donner base b1 et b2 et un nombre');
      readln(b1);
      readln(b2);
      readln(ch);
      n:=conv_b_10(ch,b1);
      ch:=conv_10_b(n,b2);
      writeln(ch);
      end.

      Conversion min base 16 au base 2

      program ex;
      uses wincrt;

      var
      ch:string;

      function bin(c:string):string;
      var
      ch,ch1:string;
      n,x,e,i:integer;

      begin

      ch:='0000';

      if c[1] in['0'..'9'] then val(c[1],n,e)
      else n:= ord(c[1])-55;

      i:=4;
      repeat
      x:= n mod 2;
      str(x,ch1);
      ch[i]:=ch1[1];
      i:=i-1;
      n:= n div 2;
      until n=0;

      bin:=ch;
      end;

      {*************************************}

      function conv_bin(ch:string):string;
      var
      ch1:string;
      i:integer;
      begin

      ch1:='';
      for i:=1 to length(ch) do
      ch1:=ch1+bin(ch[i]);

      conv_bin:=ch1;
      end;

      {************************}

      begin
      writeln('donner un nombre en base 16');
      readln(ch);
      writeln(conv_bin(ch));
      end.

      conversion de base 2 a base 8 et 16
      program test;
      uses wincrt;
      const
      ch1='01';
      type
      ch=string[46];
      chv=string[4];
      ch2=string[1];
      bits=3..4;
      var
      n,ph:string;
      b:byte;
      bit:bits;
      k:integer;
      v:chv;
      procedure saisie_base(var B : byte);
      begin
      repeat
      write('donner une base dans [8,16] : ');
      readln(B);
      until B in [8,16];
      end;

      function recherche(n:string):boolean;
      var
      i:integer;
      begin
      i:=0;
      repeat
      i:=i+1;
      until (pos(upcase(n[i]),ch1)=0) or (i > length(n));
      if i > length(n) then recherche:=true
      else recherche:=false;
      end;
      procedure saisie_ch(var n : string);
      begin
      repeat
      write('donner un nombre dans la base :');
      readln(n);
      until Recherche(n);
      end;

      function puissance (b,r:integer):integer;

      begin
      if r=0
      then puissance:=1
      else
      puissance:=puissance(b,r-1)*b;
      end;

      function convert (v:chv):ch2;
      var
      s,e,x,i:integer;
      u:string;
      begin
      s:=0;
      for i:=1 to length (v) do
      begin
      val(v[i],x,e);
      s:=s+x*puissance(2,length(v)-i);
      end;
      if s in[0..9] then str(s,u)
      else u:=chr(ord('a')+s-10);
      convert:=u;
      end;

      function converssion (n:string;b:byte):string;
      begin
      if b=8 then bit:=3
      else bit:=4;
      while length(n) mod bit <>0 do
      n:=concat('0',n);
      k:=length(n);
      ph:='';
      repeat
      v:=copy(n,k-bit+1,bit);
      ph:=concat(convert(v),ph);
      k:=k-bit;
      until k=0;
      converssion:=ph;
      end;

      function converssion (n:string;b:byte):string;
      begin
      if b=8 then bit:=3
      else bit:=4;
      while length(n) mod bit <>0 do
      n:=concat('0',n);
      k:=0;
      ph:='';
      repeat
      v:=copy(n,k+1,bit);
      ph:=concat(ph,convert(v));
      k:=k+bit;
      until k=length(n);
      converssion:=ph;
      end;

      begin
      Saisie_ch(n);
      saisie_base(b);
      write(converssion(n,b));
      end.

      ***********************************************************

      conversion de base 8 et 16 a base 2

      program test;
      uses wincrt;
      type
      ch=string[46];
      ch0=string[4];
      var
      n,v:string;
      b:byte;
      ph:string;

      u:string;
      r:integer;
      procedure saisie_base(var B : byte);
      begin
      repeat
      write('donner une base dans [2..36] : ');
      readln(B);
      until B in [2..36];
      end;
      procedure base(var ch1:ch;B:byte);
      var
      k:integer;
      x:string[1];
      begin
      if b <= 10 then
      begin
      ch1:='';
      for k:=0 to b-1 do begin str(k,x);ch1:=concat(ch1,x); end;
      end
      else
      begin
      ch1:='0123456789';
      for k:= 10 to b-1 do ch1:=concat(ch1,chr(ord('A')+k-10));
      end;
      end;
      function recherche(n:string;ch1:ch):boolean;
      var
      i:integer;
      begin
      i:=0;
      repeat
      i:=i+1;
      until (pos(upcase(n[i]),ch1)=0) or (i > length(n));
      if i > length(n) then recherche:=true
      else recherche:=false;
      end;
      procedure saisie_ch(var n : string);
      var
      ch1:ch;
      begin
      Base(ch1,B);
      repeat
      write('donner un nombre dans la base :');
      readln(n);
      until Recherche(n,ch1);
      end;

      function convert(c:char;b:byte):ch0;
      var j,x,e,r:integer;
      v:string[1];
      begin
      if c in ['0'..'9'] then val(c,x,e)
      else x:=ord(upcase(c))-ord('A')+10;

      if b=8 then begin
      u:='000';
      j:=3;
      end
      else
      begin
      u:='0000';
      j:=4;
      end;
      repeat
      r:=x mod 2;
      str(r,v);
      u[j]:=v[1];
      j:=j-1;
      x:=x div 2;
      until x=0;
      convert:=u;
      end;

      function conversion (n:string):string;

      var i:integer;
      begin
      ph:='';
      for i:=1 to length(n) do
      ph:=concat(ph,convert(n[i],b));
      conversion:=ph;
      end;

      begin
      saisie_base(b);
      Saisie_ch(n);
      write(conversion(n));
      end.

      ****************************************************************

      conversion de base 10 a l'autres bases

      program base10_base;
      uses wincrt;
      var
      n:integer;
      b:byte;

      procedure saisie_base(var b : byte);
      begin
      repeat
      write('donner une base dans [2..36] : '); readln(b);
      until b in [2..36];
      end;

      procedure saisie_n(var n : integer;x:integer);
      begin
      repeat
      write('donner un entier dans > ',x,' : '); readln(n);
      until n > x;
      end;

      Procedure affichage(x:byte);
      begin

      if x in [0..9] then write(x)
      else write(chr(ord('A')+ x - 10));
      end;

      procedure remplir (n:integer;b:byte);
      begin
      if n<>0 then
      begin
      remplir(n div b,b);
      affichage(n mod b);
      end;
      end;

      begin
      saisie_n(n,0);
      saisie_base(b);
      remplir(n,b);
      end.

      *******************************************************

      conversio autres bases a la base 10

      program base_base10;
      uses wincrt;
      type
      ch=string[46];
      var n:string;
      b:byte;
      p,s:integer;
      procedure saisie_base(var b : byte);
      begin
      repeat
      write('donner une base dans [2..36] : '); readln(b);
      until b in [2..36];
      end;

      procedure base (var ch1:ch;b:byte);
      var k:integer;
      x:string[1];
      begin
      if b<=10 then
      begin
      ch1:='';
      for k:=0 to b-1 do
      begin str(k,x); ch1:=concat(ch1,x);end;
      end
      else
      begin
      ch1:='0123456789';
      for k:=10 to b-1 do
      ch1:=concat(ch1,chr(ord('A')+k-10));
      end;
      writeln(ch1);
      end;

      function recherche (n:string;ch1:ch):boolean;
      var
      i:integer;
      begin
      i:=0;
      repeat
      i:=i+1;
      until (pos(upcase(n[i]),ch1)=0) or(i>length(n));
      if i>length(n) then recherche:=true
      else recherche:=false;
      end;

      procedure saisie_ch(var n:string);
      var ch1:ch;
      begin
      base (ch1,b);
      repeat
      write('donner un nombre dans la base: ');
      readln(n);
      until recherche (n,ch1);
      end;

      function puis (b,r:integer):integer;
      var i:integer;
      begin
      p:=1;
      for i:= 1 to r do
      p:=p*b;
      puis:=p;
      end;

      function conver(b:byte; n:string):integer;
      var
      i,e:integer;
      y:integer;
      x:string[1];
      begin
      s:=0;
      for i:=1 to length(n) do
      begin
      if n[i] in ['0'..'9'] then val(n[i],y,e)
      else y:= (ord(upcase(n[i]))-ord('A') + 10);

      s:=s+y*puis(b,length(n)-i);
      end;
      conver:=s;
      end;
      begin
      saisie_base(b);
      saisie_ch(n);
      writeln(conver(b,n));
      end.
      1. for i:=1 to n do

        MErci beaucoup