Помогите с программой в Pascal ABC, нельзя преобразовать real в integer.
Программа:
Var
a,b,c,d,e,f:real;
n:integer;
Begin
a:=0; b:=0; c:=0; d:=0; e:=0; f:=0; n:=0;
Write('Введите ваш уровень - ');
Readln(a);
Write('Введите желаемый уровень - ');
Readln(b);
Write('Введите уровень спавнера - ');
Readln(n);
If b>a then begin;
if a<16 then c:=17*a;
if (a>15)and(a<31) then c:=1.5*a*a-29.5*a+360;
if a>30 then c:=3.5*a*a-151.5*a+2220;
if b<16 then d:=17*b-c;
if (b>15)and(b<31) then d:=1.5*b*b-29.5*b+360-c;
if b>30 then d:=3.5*b*b-151.5*b+2220-c;
end
else Writeln('Желаемый уровень должен быть больше вашего');
e:=d/n/5; e:=int(e);
if e mod 1=0 then e:=e
else e:=trunc(e)+1;
f:=d/n/10;f:=int(f);
if f mod 1=0 then f:=f
else f:=trunc(f)+1;
Writeln('Вам потребуется ',d,' опыта, для чего потребуется убить ',e,' скелетов/зомби/криперов или ',f,' ифритов');
end.
Ошибка здесь
e:=d/n/5; e:=int(e);
if e mod 1=0 then e:=e
else e:=trunc(e)+1;
f:=d/n/10;f:=int(f);
if f mod 1=0 then f:=f
else f:=trunc(f)+1;
Ответы
Ответ дал:
0
Ответ:
Переменная e объявлена как real, после чего Вы используете над ней операцию mod вот здесь:
if e mod 1=0 then e:=e
Что недопустимо, поскольку mod используется только с целыми числами. Заменив эту строку на следующую, ошибка исчезнет:
if trunc(e) mod 1=0 then e:=e
Helper211:
Так как смысла в некорректной строке не прослеживается. Что значит, например, остаток от деления 12,57 на единицу? Если Вы имели в виду дробную часть (то есть 0,57), то для такого есть специальная функция - frac. При вызове frac(12.57) она вернет 0,57
3 спавнера (3 уровень)
мне надо округлить вверх, например, 5,3 --> 6; 7,7 --> 8; 1 -->1
вывод -- купим 2 банки
if (frac(e)>0) then e:=Floor(e)+1
else e:=Floor(e);
e:=d/n/5;
if e=round(e) then e:=e
else e:=trunc(e)+1;
Вас заинтересует
3 месяца назад
3 месяца назад
4 месяца назад
4 месяца назад
7 лет назад