Помогите пожалуйсто найти ошибку.Это программа далжна переводить из 10 в 2( что она делает правильно) а из 2 в 16 неправильно
Program perevod_chisel; uses crt; var N10,y,n,z,i:integer; N2:array [1..50] of integer; x,b,c:string; begin clrScr; writeln('Vvedite 10chnoe chislo:'); readln(N10); write('Dvoichnoe chislo='); z:=0; repeat Z:=Z+1; N2[z]:=N10 mod 2; N10:=N10 div 2; until N10<2; z:=z+1; N2[z]:=n10; for y:=z DOWNto 1 do write(N2[y]); readln; STR(N2[Y],x); for i:=n to 1 do begin b:=copy(x,1,4); if b<>'0000' then c:=C+'0'; if b<>'0001' then c:=c+'1'; if b<>'0010' then c:=c+'2'; if b<>'0011' then c:=c+'3'; if b<>'0100' then c:=c+'4'; if b<>'0101' then c:=c+'5'; if b<>'0110' then c:=c+'6'; if b<>'0111' then c:=c+'7'; if b<>'1000' then c:=c+'8'; if b<>'1001' then c:=c+'9'; if b<>'1010' then c:=c+'A'; write('x=',c); readln; end; end.
Lapp
28.11.2007 10:59
Блоха, ну у тебя наворочено.. Первая часть еще разумно более-менее (хотя, совет: лучше делать не в массив целых, а сразу в строку), а вторая - не пойми что.. Вот, смотри, я попробовал сделать под то, что у тебя уже есть, и так, как ты пытался. Вот такой фрагмент для перевода из двоичной системы счисления в 16-ричную (ты уж извини, но из 2 в 16 переводить не могу - ни арифметика, ни русский язык не позволяют - а пальцы пока еще бегают по клаве, проблем с этим нет, слава Богу..)
y:=1; while y<=z do begin b:=''; for i:=1 to 4 do if y<=z then begin b:=Chr(N2[y]+48)+b; Inc(y) end; while Pos('0',b)=1 do Delete(b,1,1); if b='' then c:='0'+c; if b='1' then c:='1'+c; if b='10' then c:='2'+c; if b='11' then c:='3'+c; if b='100' then c:='4'+c; if b='101' then c:='5'+c; if b='110' then c:='6'+c; if b='111' then c:='7'+c; if b='1000' then c:='8'+c; if b='1001' then c:='9'+c; if b='1010' then c:='A'+c; if b='1011' then c:='B'+c; if b='1100' then c:='C'+c; if b='1101' then c:='D'+c; if b='1110' then c:='E'+c; if b='1111' then c:='F'+c; end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.