Перевод чисел из 10-ой в 8-ую систему счисления и наоборот
Категория: Delphi/Pascal
2012-01-05 15:34:30
Перевести числа 675, 865 в 8-ую систему счисления. Выполнить над переведенными числами сложение. Выполнить операцию сложения над числами в десятичной системе счисления и перевести результат в 8-ую систему счисления. Сравнить полученные результаты.
code: #pascal
uses crt; const a=675; b=865; {chisla po variantu,zdes mogut byt lubye chisla} S=8; {SS po variantu} function SPlus(x1,x2:integer):integer;{sloshenie 2-x chisel v 8 SS} var p1,p2,rez,buf: string; k,theend:byte; dec,ost,code,n1,n2:integer; begin str(x1,p1); str(x2,p2); {perevodim poluchennye cifry v stroki } k:=0; dec:=0; rez:='';{obnuliaem peremennye} if p1>p2 then theend:=length(p1) else theend:=length(p2);{opredeliem kol-vo cifr bolshego shisla} repeat {povtoriaem} val(p1[length(p1)-k],n1,code); val(p2[length(p2)-k],n2,code); {berem poislednie cifry chisel} inc(k); ost:=(n1+n2+dec) mod S; {schitaem ostatok} dec:=(n1+n2+dec) div S; {schitaem kol-vo desitkov} str(ost,buf); {perevodim ostatok v stroku} rez:=rez+buf; {dopisyvaem ostatok v rezultiruiuschuiu stroku} until k>theend; {poka ne pereberem vse cifry bolshego chisla} buf:=''; for k:=length(rez) downto 1 do buf:=buf+rez[k];{perepivaem rezultiruiuschuiu stroku v obratnom poriadke} val(buf,dec,code);{perevodim v chislo} SPlus:=dec; {result:=poluchennoe chislo} end; function DecToS(x0:integer):integer; {perevod iz 10 SS v proizvolnuiu S<11} var k:byte; x,ost,num,code:integer; st,buf: string; begin x:=x0; st:=''; ost:=x; while x>0 do {poka polozhitelnyi ostatok} begin ost:=x mod S; {uznali ostatok} x:=x div S; {zapomnili sleduiuschee chislo} str(ost,buf); {pereveli ostatok v stroku} st:=st+buf; {dopisali v rezultiruiuschuiu stroku} end; buf:=''; for k:=length(st) downto 1 do buf:=buf+st[k];{perepisali rez. stroku v obratnom poriadke} val(buf,num,code); {pereveli v chislo} if code=0 then DecToS:=num {esli oshibok perevoda net, to Result:=poluchennoe chislo} else {inache vydaem soobschenie, zavershaem programmu} begin clrscr; writeln('Error: Function DecToS()!'); readkey; halt; end; end; begin clrscr; writeln('Variant 11'); writeln; write('DATA: '); writeln('a=',a,', b=',b,', system = ',S,', operation = +.'); writeln; write('STAGE 1: '); writeln('a=',DecToS(a),', b=',DecToS(b),', system = ',S,'.'); write('STAGE 2: '); writeln('a+b=',SPlus(DecToS(a),DecToS(b)),', system = 8.'); write('STAGE 3: '); writeln('c=a+b; c=',a+b,', system = 10;',' c=',DecToS(a+b),', system = ',S,'.'); write('STAGE 4: '); if SPlus(DecToS(a),DecToS(b))=DecToS(a+b) then writeln('Good!') else writeln('Bad!'); writeln; write('Press any key to Exit...'); readkey; end.
автор: delpas
Поделиться: