Компьютерный форум

Компьютерный форум (http://www.hardforum.ru/)
-   Prolog (http://www.hardforum.ru/f141/)
-   -   Квадратные корни (Visual Prolog 8) (http://www.hardforum.ru/t132235/)

Dark Fox 11.09.2018 17:21

Квадратные корни (Visual Prolog 8)
 
Недавно начал изучать вижуал пролог и столкнулся с проблемой. Мне необходимо найти квадратные корни по вводимым данным и вроде бы я всё сделал правильно, однако при экзекуции компилятор ругается на неравенство D<0. И выдаёт ошибку: The predicate 'main::run/0', which is declared as 'procedure', is actually 'determ'. Подскажите пожалуйста в чём ошибка.

prolog Код:
run() :-
        A = read(),
        B = read(),
        C = read(),
        D = B ^ 2 - 4 * A * C,
        (D > 0 and ! and X1 = (-B + D ^ 0.5) / (2 * A) and X2 = (-B - D ^ 0.5) / (2 * A) and writef("X1=%, X2=%", X1, X2) and clearInput
            and _ = readchar()
            or D = 0 and ! and X = -B / (2 * A) and writef("X=%", X) and clearInput and _ = readchar()
            or D < 0 and writef("X1=(-% + %i)/(2*%), ", B, -D ^ 0.5, A) and writef("X1=(-% - %i)/(2*%)", B, -D ^ 0.5, A) and clearInput
            and _ = readchar()).

Винитарх 11.09.2018 23:53

Как-то так:
Visual Prolog Код:
run() :-
        A = read(),
        B = read(),
        C = read(),
        D = B ^ 2 - 4 * A * C,
        (D > 0 and ! and X1 = (-B + D ^ 0.5) / (2 * A) and X2 = (-B - D ^ 0.5) / (2 * A) and writef("X1=%, X2=%", X1, X2) and clearInput
            and _ = readchar()
            or D = 0 and ! and X = -B / (2 * A) and writef("X=%", X) and clearInput and _ = readchar()
            or writef("X1=(-% + %i)/(2*%), ", B, -D ^ 0.5, A) and writef("X1=(-% - %i)/(2*%)", B, -D ^ 0.5, A) and clearInput
            and _ = readchar()).
Третье условие D<0 лишнее.
Почему не пользуетесь синтаксическим сахаром? Тогда писать и читать прогу легче.

VictorY 12.09.2018 12:24

Цитата:

Сообщение от Dark Fox (Сообщение 874705)
... вроде бы я всё сделал правильно, однако при экзекуции компилятор ругается на неравенство D<0

Замечательно! Вот как надо называть процесс исполнения программы!
Надо и в книжках так писать!

Винитарх 05.10.2018 21:23

Цитата:

Сообщение от VictorY (Сообщение 874772)
Замечательно! Вот как надо называть процесс исполнения программы!
Надо и в книжках так писать!

Конечно смешно.
Я здесь прикинул - ведь именно так и называется кнопочка "E" (Execute). Если её назвать "R" (Run), то программу будут "ранить" :)

VictorY 05.10.2018 21:29

Цитата:

Сообщение от Винитарх (Сообщение 876055)
Конечно смешно.
Я здесь прикинул - ведь именно так и называется кнопочка "E" (Execute). Если её назвать "R" (Run), то программу будут "ранить" :)

Предлагаю термин "экзекутить" внедрить в повседневную жизнь. Сочно! Сильно! Мощно!


Часовой пояс GMT +4, время: 02:52.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.