Задача:
Вводится 3 числа, компьютер выдает минимальное, Найти минимальное число.
Буду весьма благодарен, если, кто то напишет решение к этой задаче с пояснениями.
Другие языки программирования и технологии
Помощь в решение задачи на PROLOG
Ой-ой-ой. Капитан Гугл и Виктор С, вы оба используете предикаты как функции, возвращающие числовое значение. Предикаты возвращают только логические значение успех или неуспех (true, fail).
Для получения результата их нужно вызывать только как процедуры. Правда, на знаю, как с этим обстоит дело в Strawberry Prolog.
Visual Prolog 7.2 и 7.3 (по-моему, начиная с 6.2):
implement main
open core, console
constants
className = "main".
classVersion = "".
class predicates
min:(integer, integer, integer) procedure (i, i, o).
clauses
classInfo(className, classVersion).
min(A, B, Min) :- A < B, Min = A, !.
min(_, B, Min) :- Min = B.
clauses
run() :- init(),
read() = X,
read() = Y,
min(X, Y, Z),
read() = W,
min(Z, W, Min),
write("Минимальное число = ", Min),
readChar() = _, readChar() = _.
end implement main
goal
mainExe::run(main::run).
Turbo Prolog 2.0:
predicates
min(integer, integer, integer)
run()
clauses
min(A, B, Min) :- A < B, Min = A, !.
min(_, B, Min) :- Min = B.
run() :- readint(X), readint(Y),
min(X, Y, Z),
readint(W),
min(Z, W, Min),
write("Минимальное число = ", Min),
readchar(_).
goal
run.
Для получения результата их нужно вызывать только как процедуры. Правда, на знаю, как с этим обстоит дело в Strawberry Prolog.
Visual Prolog 7.2 и 7.3 (по-моему, начиная с 6.2):
implement main
open core, console
constants
className = "main".
classVersion = "".
class predicates
min:(integer, integer, integer) procedure (i, i, o).
clauses
classInfo(className, classVersion).
min(A, B, Min) :- A < B, Min = A, !.
min(_, B, Min) :- Min = B.
clauses
run() :- init(),
read() = X,
read() = Y,
min(X, Y, Z),
read() = W,
min(Z, W, Min),
write("Минимальное число = ", Min),
readChar() = _, readChar() = _.
end implement main
goal
mainExe::run(main::run).
Turbo Prolog 2.0:
predicates
min(integer, integer, integer)
run()
clauses
min(A, B, Min) :- A < B, Min = A, !.
min(_, B, Min) :- Min = B.
run() :- readint(X), readint(Y),
min(X, Y, Z),
readint(W),
min(Z, W, Min),
write("Минимальное число = ", Min),
readchar(_).
goal
run.
Еще бы вспомнить этот пролог.. . Что-то вроде
min(a,b):-a>b,b.
min(a,b):-a<=b,a.
goal:-
read(a),
read(b),
read(c),
write(min(a,min(b,c)).
min(a,b):-a>b,b.
min(a,b):-a<=b,a.
goal:-
read(a),
read(b),
read(c),
write(min(a,min(b,c)).
pascal, на свой язык сами переделаете. а мне что то лень
Const N = 10; MaxRealVal = 1.7E38;
Var X : Array[1..N] Of Real; I : Integer; Min, Y : Real;
Begin
For I := 1 To N Do ReadLn(X);
Min := MaxRealVal;
For I := 1 To N Do
Begin
Y := X[ I ];
If I Mod 2 = 1 Then Y := -Y;
If Y < Min Then Min := Y;
End;
WriteLn(Min:0:4);
ReadLn;
End.
Const N = 10; MaxRealVal = 1.7E38;
Var X : Array[1..N] Of Real; I : Integer; Min, Y : Real;
Begin
For I := 1 To N Do ReadLn(X);
Min := MaxRealVal;
For I := 1 To N Do
Begin
Y := X[ I ];
If I Mod 2 = 1 Then Y := -Y;
If Y < Min Then Min := Y;
End;
WriteLn(Min:0:4);
ReadLn;
End.
Ахаха, чувак с Паскалем отжог!)) )
http ://w ww. cyberforum. ru/prolog/thread65188.html (уберите пробелы)
Вот похожая задача. Гугл в помощь. ;-)
http ://w ww. cyberforum. ru/prolog/thread65188.html (уберите пробелы)
Вот похожая задача. Гугл в помощь. ;-)
думаю, что выглядеть конструкция будет как-то так:
max(X, A, A):- X = A.
max(X, A, B):- A>B, X = A.
max(X, A, B):- B>A, X = B.
max(X, A, B, C):- X = max(max(A, B), max(A, C)).
?- max(X,7,3,5), write(X), nl.
ps: Я правда не спец в этом, так что оптимальность гарантировать не могу.
pps: Работоспособность в вашей версии, кстати, тоже ибо пролог проходил на версии "strawberry prolog"
max(X, A, A):- X = A.
max(X, A, B):- A>B, X = A.
max(X, A, B):- B>A, X = B.
max(X, A, B, C):- X = max(max(A, B), max(A, C)).
?- max(X,7,3,5), write(X), nl.
ps: Я правда не спец в этом, так что оптимальность гарантировать не могу.
pps: Работоспособность в вашей версии, кстати, тоже ибо пролог проходил на версии "strawberry prolog"
Похожие вопросы
- Нужна помощь в решении задачи по С++ связанная с матрицами
- Информатика. Помощь в решении задач по массивам
- Нужна помощь с решением задачи на С++ через Visual Studio
- Нужна помощь в решении задачи по языку программирования С++!!срочно!
- Нужна помощь в решении задач на Циклы и простейшие программы
- Необходима помощь в решении задачи. C++
- Как в C++ разбить число на цифры и вывести их через пробел? Решение задачи реализовать с помощью конструкции switch.
- Недавно начал изучать программирование (не с полного нуля), но мои решения задач слишком громоздкое, это нормально?
- Помогите решить задачу в Prolog.
- задача на С++, нужна помощь в решении