Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему пишет, что нельзя преобразовать тип real к int64(integer) PascalABC.net

Даниил Устименко Гуру (3203), закрыт 9 лет назад
В общем, такое дело, делим к примеру 44638 / 22 = 2029, но нет! Пишет, мол нет, не могу.

Это мой конвертор систем счисления, введите сначала 445, затем 22, потом 6.

Смысл, перевести число 445 из 22 системы счисления в 6. Такая тема, что моя программа переводит сперва в 10-ое число, на этом я и построил алгоритм. Даже если она и переведёт, получится, что последняя переменная 2029.

А она должна затем 2029 перевести 6-ую. С чем прекрасно должна справится, но нет! Выдаёт эту ошибку. Что делать?
Дополнен 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.
Лучший ответ
Ученик (181) 9 лет назад
А это у паскаля особенность такая. Деление возвращает real, даже если делим целые числа. Преобразовывать нужно. Все через ж...
Гуглим pascal real to integer
Остальные ответы
Похожие вопросы