Дополнен 9 лет назад
Код:
Program Notation;
Var
x:int64;
xstr:string;
xcode:int64;
s:string;
code:integer;
sum:int64;
n: array [1..10000] of int64;
q: array [1..10000] of int64;
F: array [1..10000] of int64;
m: array [1..10000] of string;
icopy:int64;
ccopy2:int64;
g:int64;
i:int64;
l:int64;
p:char;
c1,c2:integer;
Begin
begin
writeln();
writeln(' Добро пожаловать! ');
writeln(' Данная программа переводит целые числа из одной системы счисления в другую, вы можете выбрать конфигурацию. ');
writeln;
write(' Введите число: ');
readln(xstr);
val(xstr,x,code);
if (x<0) then
p:=('1');
writeln;
write(' Вы хотите перевести число ', xstr, ' из (введите систему счисления): ');
readln(c1);
writeln;
write(' Из ', c1, '-ой системы счисления в (введите систему счисления): ' );
readln(c2);
writeln;
writeln(' В ', c2, '-ую, выполняется вычисление... ');
writeln;
writeln(' Вычисление завершено! ');
writeln;
write(' Число: ', xstr, ' в переводе из ', c1, '-ой системы счисления в ', c2, '-ую систему счесления: ');
x:= Abs(x);
xcode:=x;
end;
if (c1=10) then
begin
repeat
i:=i+1;
n[i]:= x mod c2;
x:= x div c2;
until x=0;
if (p='1') then
write('-');
for i:=i downto 1 do
begin
begin
if not (c2=16) then
write(n[i]);
end;
begin
if (c2=16) then
begin
if (n[i])=1 then
write(n[i]);
if (n[i])=10 then
begin
write('A');
n[i]:=1;
end;
if (n[i])=11 then
begin
write('B');
n[i]:=1;
end;
if (n[i])=12 then
begin
write('C');
n[i]:=1;
end;
if (n[i])=13 then
begin
write('D');
n[i]:=1;
end;
if (n[i])=14 then
begin
write('E');
n[i]:=1;
end;
if (n[i])=15 then
begin
write('F');
n[i]:=1;
end;
if n
Дополнен 9 лет назад
if not (n[i]=1) then
write(n[i]);
end;
end;
end;
end;
if not (c1=10) then
begin
i:= length(xstr);
l:= i-1;
str(x,s);
if not (c1=16) then
begin
for i:= i-i+1 to i do
m[i]:= s[i];
end;
if (c1=16) then
begin
for i:= i-i+1 to i do
if (xstr[i])='A' then
m[i]:='10'
else
if (xstr[i])='a' then
m[i]:='10'
else
if (xstr[i])='B' then
m[i]:='11'
else
if (xstr[i])='b' then
m[i]:='11'
else
if (xstr[i])='C' then
m[i]:='12'
else
if (xstr[i])='c' then
m[i]:='12'
else
if (xstr[i])='D' then
m[i]:='13'
else
if (xstr[i])='d' then
m[i]:='13'
else
if (xstr[i])='E' then
m[i]:='14'
else
if (xstr[i])='e' then
m[i]:='14'
else
if (xstr[i])='F' then
m[i]:='15'
else
if (xstr[i])='f' then
m[i]:='15'
else
m[i]:=xstr[i];
end;
for i:= i-i+1 to i do
begin
q[i]:= l;
l:= l - 1;
end;
for i:= i-i+1 to i do
begin
val(m[i],n[i],code);
end;
g:=c1;
icopy:=i;
for i:= i-i+1 to i do
begin
ccopy2:=c1;
for icopy:= i-i+1 to (q[i]) do
begin
ccopy2:=ccopy2*g;
end;
F[i]:= ccopy2
Дополнен 9 лет назад
F[i]:= ccopy2;
F[i]:= n[i]*ccopy2;
end;
for i:=i-i+1 to i do
begin
sum:= F[i]+sum;
end;
if (c1<>10) and (c2<>10) then
i:=0;
writeln(' Попытка деления: ', sum, ' на ', c1, ' получаю: ',sum/c1);
xcode:=sum/c1;
begin
repeat
i:=i+1;
n[i]:= xcode mod c2;
xcode:= xcode div c2;
until xcode=0;
end;
if (c1<>10) and (c2<>10) then
begin
for i:=i downto 1 do
write(n[i]);
end
else
begin
write(sum/c1);
end;
end;
write('.');
writeln;
writeln(' Спасибо за участие, работа программы завершена. ');
end.
Это мой конвертор систем счисления, введите сначала 445, затем 22, потом 6.
Смысл, перевести число 445 из 22 системы счисления в 6. Такая тема, что моя программа переводит сперва в 10-ое число, на этом я и построил алгоритм. Даже если она и переведёт, получится, что последняя переменная 2029.
А она должна затем 2029 перевести 6-ую. С чем прекрасно должна справится, но нет! Выдаёт эту ошибку. Что делать?