pascal-prevod z 2-16 a naopak + 16-10 sustavy

Programovacie jazyky, rady, poradňa...
kubik_90
Novice
Novice
Príspevky: 1
Registrovaný: 12 dec 2009, 18:06
Kontaktovať používateľa:

pascal-prevod z 2-16 a naopak + 16-10 sustavy

Príspevok od používateľa kubik_90 »

ludia strasne potrebujem tento program mat hotovy co najskôr ma to robit z 10 do dvojkovej a naopak (to uz roby) ak tomu to ma menit z 2. do 10. a z 16. do 10 a vsetky rôzne kombinacie tychto troch sustav.
sladko sa odmenim diki




Kód: Vybrať všetko

{prevod z 10-tkovej do 2-ovej a opacne}
program PREVOD;
uses Crt;
var C,C10:longint;{C,C10-cisla v desiatkovej}
       C2,C16:string;{C2-dvojkove cislo}
        v:char;{v-odpoved}


procedure DESIATKOVE;
var m:byte;{m-delenie mod}
begin
 write('Zadaj cislo v desiatkovej s£stave:');
 readln(C10);
 if C10=0 then write('0 v desiatkovej = 0 v dvojkovej')
          else begin
                 C:=C10;
                C2:=' ';
                while C10<>0 do begin
                                  m:=C10 mod 2;
                                  if m=0 then C2:='0'+C2
                                         else C2:='1'+C2;
                                  C10:=C10 div 2;
                                end;
                write(C,' v desiatkovej = ',C2,' v dvojkovej');
              end;
end;


procedure DVOJKOVE;
var d,i:byte;{d-dlzka retazca}
begin
 write('Zadaj dvojkove cislo:');
 readln(C2);
 d:=length(C2);
 C10:=0;
 for i:=1 to d do begin
                   if C2[i]='0' then C10:=2*C10
                                else C10:=2*C10+1;
                  end;
 write(C2,' v dvojkovej = ',C10,' v desiatkovej');
end;


procedure HEXADECIMALNA;
var m:byte;{m-delenie mod}
begin
 write('Zadaj cislo v desiatkovej s£stave:');
 readln(C10);
 if C10=0 then write('0 v desiatkovej = 0 v hexadecimalnej')
          else begin
                 C:=C10;
                C2:=' ';
                while C10<>0 do begin
                                  m:=C10 mod 16;
                                  case m of
                                         1: C16:='0'+C16;
                                         2: C16:='0'+C16;
                                         3: C16:='0'+C16;
                                         4: C16:='0'+C16;
                                         5: C16:='0'+C16;
                                         6: C16:='0'+C16;
                                         7: C16:='0'+C16;
                                         8: C16:='0'+C16;
                                         9: C16:='0'+C16;
                                         10: C16:='A'+C16;
                                         11: C16:='B'+C16;
                                         12: C16:='C'+C16;
                                         13: C16:='D'+C16;
                                         14: C16:='E'+C16;
                                         15: C16:='F'+C16;
                                         end;
                                  C10:=C10 div 2;


                write(C,' v desiatkovej = ',C2,' v hexadecimalnej');
              end;
         end;
end;


BEGIN
 ClrScr;
 write('Zvol prevod z desiatkovej na binarnu - d , z binarnej na desiatkovu - b , z desiatkovej na hexadecimalnu - h:');
 readln(v);
 writeln;
 if v='d' then DESIATKOVE
          else if v='b' then DVOJKOVE
                          else HEXADECIMALNA;
 readln;
END.
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

Tak si skus pri prevode do akejkolvek sustavy naprv cislo zmenit do BIN a z BIN do tej ktorej chces. Pises, ze z BIN to DEC a naopak to uz ide. Tak uz len dorobit z BIN do HEX a naopak a mas to. Z HEX do BIN staci kazdu cislicu z HEX rozlozit na 4 BIN cislice. A z BIN do HEX zase kazde styri cislice spajas do jednej HEX. Ked toto budes mat, tak prevod napr. z DEC do HEX spravis cez BIN.
Prajem vela stastia ;)
Napísať odpoveď