Ошибка во время выполнения программы
от Дарья Михайловская - Понедельник 6 Ноябрь 2017, 12:24
  Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0.

Входные данные
Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно.

Выходные данные
Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.

решение
program uravnenie_s3;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
a,b,c,d:integer;
e:real;
begin
readln(a,b,c,d);
if (((c = 0) and (d = 0))or (a=0)) then writeln('NO');
e:=-b/a;
if (((a=c) and (b=d)) or ((a=0) and (b0))) then writeln('NO')
else if ((a=0) and (b=0)) then writeln('INF')
else if (a0) then
if ((round(e)=e) and (c*round(e)+d0)) then writeln(round(e))
else writeln('NO');
readln;
end.


На 7 тесте выводит ошибку во время выполнения программы. Не пойму в чем проблема.Помогите
Re: Ошибка во время выполнения программы
от Peter Cherepanov - Четверг 9 Ноябрь 2017, 03:00
  Ошибка в программе -- это деление на 0. Операция mod это тоже деление. Посмотрите внимательно, почему она выполняется при каких-либо данных.

Далее, Паскаль не определяет порядок вычисления выражений. Так что в Паскале следующая конструкция не работает if (x != 0 && y / x == 42) {...}
Пишите на Си.