Ошибка "Несколько подпрограмм могут быть вызваны". Pascal ABC.net. begin var...

0 голосов
89 просмотров

Ошибка "Несколько подпрограмм могут быть вызваны". Pascal ABC.net.

begin
var d:=ReadlnString('Вас приветствует программа, которая может делить '+
'два числа с остатком. Напишите, пожалуйста, свое имя');
Writeln('Здравствуйте, ',d,'!');
repeat
Writeln('Как нужно написать ответ?',#13#10,
'1 вариант. 5: 3 = 1(ост.2)',#13#10,'2 вариант. 5 = 3*1 + 2',#13#10,
'0 - завершить работу');
var c:char;
Repeat
c:=ReadlnChar('Введите 0, 1 или 2:');
case c of
'0': exit;
'1','2':break;
end;
until False;
var a,b:BigInteger;
if not BigInteger.TryParse(ReadlnString('Введите целочисленное делимое:'),a)
then begin
Writeln('Вы ввели неверное значение. Работа завершена');
Exit
end;
if not BigInteger.TryParse(ReadlnString('Введите целочисленный делитель:'),b)
then begin
Writeln('Вы ввели неверное значение. Работа завершена');
Exit
end;
{if b=0 then begin
writeln('Вы ввели неверное значение.');
exit end;}
if c='1' then
WritelnFormat('{0}:{1}={2}(ост.{3})',a,b,a div b,a mod b)
else
WritelnFormat('{0}={1}*{2}+{3}',a,b,a div b,a mod b);
var f:char;
Repeat
f:=ReadlnChar('Если вы хотите завершить работу, введите "0", если продолжить - любую букву.');
case f of
'0': exit;
else break;
end;
until False;
until False
end.


Информатика | 89 просмотров
0

Всё функционирует. Pascal ABC. NET v3.0 сборка 1111

0

Уберите фигурные скобки.

0

Writeln('Вы ввели неверное значение. Работа завершена');Exitend;{if b=0 then beginwriteln('Вы ввели неверное значение.');exit end;}if c='1' thenWritelnFormat('{0}:{1}={2}(ост.{3})',a,b,a div b,a mod b)else

0

В строке "{if b=0 then beginwriteln('Вы ввели неверное значение.');exit end;}"

0

Кодстайл, конечно... Буду смотреть.

0

Попробуйте так:if integer(b)=0 then  begin   writeln('Вы ввели неверное значение.');   exit  end;

0

Напишите это в ответ.

0

Все работает очень хорошо.

0

Спасибо.

Дан 1 ответ
0 голосов
Правильный ответ

//Pascal ABC.NET v3.0 сборка 1111

begin
var d:=ReadlnString('Вас приветствует программа, которая может делить '+'два числа с остатком. Напишите, пожалуйста, свое имя');
Writeln('Здравствуйте, ',d,'!');

repeat
Writeln('Как нужно написать ответ?',#13#10,'1 вариант. 5: 3 = 1(ост.2)',#13#10,'2 вариант. 5 = 3*1 + 2',#13#10,'0 - завершить работу');
  var c:char;
   Repeat
    c:=ReadlnChar('Введите 0, 1 или 2:');
     case c of
      '0': exit;
      '1','2':break;
      end;
    until False;
  var a,b:BigInteger;
 if not BigInteger.TryParse(ReadlnString('Введите целочисленное делимое:'),a) then
 begin
  Writeln('Вы ввели неверное значение. Работа завершена');
  Exit
 end;
 if not BigInteger.TryParse(ReadlnString('Введите целочисленный делитель:'),b) then
 begin
  Writeln('Вы ввели неверное значение. Работа завершена');
  Exit
 end;
 if integer(b)=0 then
{приведение к типу Integer. Менее абстрактно, чем BigInteger}
  begin
   writeln('Вы ввели неверное значение.');
   exit
  end;
if c='1' then WritelnFormat('{0}:{1}={2}(ост.{3})',a,b,a div b,a mod b)
else
WritelnFormat('{0}={1}*{2}+{3}',a,b,a div b,a mod b);
var f:char;
Repeat
f:=ReadlnChar('Если вы хотите завершить работу, введите "0", если продолжить - любую букву.');
case f of
'0': exit;
else break;
end;
until False;
until False
 end.

(38.6k баллов)