Другие языки программирования и технологии

Ошибка 26 в Турбо Паскале

Итак, полный код программы. Компилятор Turbo Pascal 7.0, с такой противной консолью. Program quadratic_equation; uses Crt; var a, b, c, discr, x1, x2: integer; BEGIN ClrScr; writeln ('Hello world'); writeln ('Quadratic Equation Ariphmometer Very Epic'); writeln (''); writeln ('Please, enter A'); readln (a); writeln ('Please, enter B'); readln (b); writeln ('Please, enter C'); readln (c); if (b mod 2 = 0) then BEGIN discr := sqr (b /2) - (a * c); END. else BEGIN discr := sqr (b) - (4 *a *c); END. if (discr < 0) then writeln ('No equations'); if (discr = 0) then BEGIN x1 = (0 - b) / (2 * a) writeln ('Equation x1 = ',x1); END. if (discr > 0) then BEGIN x1 = ((0 - b) + sqrt(discr)) / (2 * a); x2 = ((0 - b) - sqrt(discr)) / (2 * a); writeln ('Equation x1 = ',x1); writeln ('Equation x2 = ',x2); END. readln(); END. При компиляции выдает двадцать шестую на строчке discr := sqr (b /2) - (a * c); , причем типы тут явно все приведены. Вот скажите, где я налажал???
Алмазик -***
Алмазик -***
513
А ничего, что у тебя после каждого енда стоит точка? Оо+ интежер может быть только а, б, с. А остальные должны быть real

элементарные ошибка. . :)
Эркин Кольбаев
Эркин Кольбаев
2 908
Лучший ответ
А нечего присваивать целой переменной вещественное значение ;)
b/2 дает вещественное значение, его возведение в квадрат - опять же вещественное,
Алмазик -*** Плз поподробнее. Как конкретно привести типы? Просто Паск у нас совсем недавно... Урока два только учим.
Ведь определенного значения-то я не присваивал, так? А для интеджера все написанные операнды должны работать.
у тебя все переменные integer
По моему тип Integer для переменной discr не подойдет.
Используй функцию Trunc, она выделяет целую часть числа
discr := Trunc (sqr (b /2) - (a * c));
Илья Фогель
Илья Фогель
42 447
Алмазик -*** Ура, что-то сместилось. Теперь только ошибка, мол, точку с запятой забыл. Прямо на следующей строчке.
Хотя нифига такого.
uses Crt;
var
a, b, c, discr, x1, x2: real;
BEGIN
ClrScr;
writeln ('Hello world');
writeln ('Quadratic Equation Ariphmometer Very Epic');
writeln ('');
writeln ('Please, enter A');
readln (a);
writeln ('Please, enter B');
readln (b);
writeln ('Please, enter C');
readln (c);
if (frac(b / 2) = 0) then
BEGIN
discr := sqr (b /2) - (a * c);
END
else
BEGIN
discr := sqr (b) - (4 *a *c);
END;
if (discr < 0) then writeln ('No equations');
if (discr = 0) then
BEGIN
x1 := (0 - b) / (2 * a);
writeln ('Equation x1 = ',x1);
END;
if (discr > 0) then
BEGIN
x1 := ((0 - b) + sqrt(discr)) / (2 * a);
x2 := ((0 - b) - sqrt(discr)) / (2 * a);
writeln ('Equation x1 = ',x1:5:5);
writeln ('Equation x2 = ',x2:5:5);
END;
readln;
END.
Алмазик -*** Офигеть, все работает. Сейчас проверю на корректность решения, а в целом -- респектище!