М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
mascamasa
mascamasa
02.01.2022 11:42 •  Информатика

с программой в 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;

👇
Ответ:
alinadudocka
alinadudocka
02.01.2022

Переменная e объявлена как real, после чего Вы используете над ней операцию mod вот здесь:

if e mod 1=0 then e:=e

Что недопустимо, поскольку mod используется только с целыми числами. Заменив эту строку на следующую, ошибка исчезнет:

if trunc(e) mod 1=0 then e:=e

4,7(53 оценок)
Открыть все ответы
Ответ:
demkainka
demkainka
02.01.2022

1. 32

a = 26

b = 6

b = a / b + b = 26 / 6 + 6 = (4*6+2) / 6 + 6 = 4 + 6 = 10

c = a % b + a = 26 % 10 + 26 = (2 * 10 + 6) % 10 + 26 = 6 + 26 = 32

2. 9

a = 24

b = 5

c = a % b + b = 24 % 5 + 5 = (4 * 5 + 4) % 5 + 5 = 4 + 5 = 9

3. 32

a = 28

b = 7

c = a / b + a = 28 / 7 + 28 = 4 + 28 = 32

4. 6

a = 24

b = 5

b = a / b = 24 / 5 = (4 * 5 + 4) / 5 = 4

c = a / b = 24 / 4 = 6

5. 5

a = 22

b = 4

b = a % b + 4 = 22 % 4 + 4 = (5 * 4 + 2) % 4 + 4 = 2 + 4 = 6

C = a % b + 1 = 22 % 6 + 1 = (3 * 6 + 4 ) + 1 = 4 + 1 = 5

6. 3

a = 28

b = 7

b = a / b = 28 / 7 = 4

c = a % (b + 1) = 28 % (4 + 1)  = 28 % 5 = (5*5 + 3) % 5 = 3

7. 7

a = 26

b = 6

b = a % b = 26 % 6 = (4 * 6 + 2) % 6 = 2

c = a / (b + 1) = 26 / (2 + 1) = 26 / 3 = (7*3 + 5) / 3 = 7

4,4(76 оценок)
Ответ:
алинагг
алинагг
02.01.2022

1. При вводе числа 15 программа выведет число 4.

2. Наименьшие значения A, при которых программа выведет верный ответ, равны 2 и 3.

3. В программе допущена типичная для начинающих программистов ошибка «смещения кадра»: значение переменной K, необходимое при первом выполнении цикла, присваивается до начала цикла, а значение для следующего оборота цикла вычисляется в конце предыдущего оборота. В результате, при завершении цикла K имеет значение больше, чем нужно. Вторая ошибка – неверный шаг изменения K. «Идеальная» программа решения этой задачи должна выглядеть так (приведён пример на языке Бейсик):

DIM A,S,K AS INTEGER

INPUT A

S = 0

K = −1

WHILE S <= A

K = K + 2

S = S + K*(K+1)

WEND

PRINT K

END

Но по условиям задания менять местами строки нельзя, их можно только исправлять. Поэтому, кроме исправления шага, приходится корректировать значение K при выводе. Пример исправления для языка Паскаль:

Первая ошибка:

k := k+1;

Исправленная строка:

k := k+2

Вторая ошибка:

writeln(k)

Исправленная строка:

writeln(k-2)

В программах на других языках ошибочные строки и их исправления аналогичны.

Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков и служебных слов после содержательной части исправления.

4,7(82 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ