Var a,b,c,D,x1,x2: longint; begin read (a, b, c); D:=sqr(b)-4*a*c; x1:= (-b + sqrt(D))...

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

Var a,b,c,D,x1,x2: longint;

begin
read (a, b, c);
D:=sqr(b)-4*a*c;
x1:= (-b + sqrt(D)) div 2 * a;
x2:=(-b - sqrt(D)) div 2 * a;
write(x1,' ', x2);
end.
Почему выдает ошибку?


Информатика (103 баллов) | 142 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Дискриминант равен квадрату коэффициента при переменной первой степени. При чем здесь "div"? В принципе поиск корней выполнен неправильно

(1.7k баллов)
0

Это только начальный курс и от меня хотят что бы использовали только "longint"

0

В таком случае нужно, чтобы числитель делился целочисленно на знаменатель. Для этого нужно добавлять "if", но по-моему проще x1 и x2 записать как вещественные

0

Циклы тоже запрещены. Прошу прощения, а вещественные-это real?

0

if - это не цикл. Да, real - вещественные

0

При написании простой функции извлечения корня программа выдает ошибку
var a,b: longint;

begin
read (a);
b:= sqrt(a);
write(b);
end.
Program9.pas(6) : Нельзя преобразовать тип real к integer
В самоучителях при введении чисел 16, 25 программа нормально считает корень. У меня же выдает ошибку сразу. Что я делаю не так? Опять же real использовать нельзя.

0

Все просто, при извлечении корня из целого числа, в случае с 16 и 25, получается целое число, следовательно можно использовать integer, но если при извлечении корня появляется вещественное число (1.265; 26.4 ;4.51), то перед паскалем задача преобразовать тип числа integer

0

в real, чего делать нельзя

0

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

0

Не ломай себе мозги =) Вычисление корней квадратного уравнения совершаются с помощью извлечения корня и деления, а эти операции присущи типу переменных rea;

0

Спасибо