На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (7) [1] 2 3 ...  6 7 все  ( Перейти к последнему сообщению )  
> адача на Turbo Prolog
    нужно решить таку задачу на Turbo Prolog 2.0:
    1. Пусьть дано координати трех точек на плоскости. Если они могут бить вершинами треугольника, определити его вид (разносторонний, равнобедрений, равносторонний). Найдите длину его висот и напечатайте их в порядке убивания.
    2.user posted image
    (с помощю рекурсии)
    зарание спасибо
      Задача №2.
      В условии не определено значение функции при n=m=0. Поэтому задача не решается.
      Если доопределить C(0,0)=1, тогда вот программа

      ExpandedWrap disabled
        predicates
        c(integer,integer,real)
         
        goal
          clearwindow,
          c(5,3,X), write(X).
         
        clauses
         
        c(N,0,1):- N>=0.
        c(N,M,0):- M>N, N>=0.
        c(N,M,R):-
           N1=N-1,
           M1=M-1,
           c(N1,M1,R1),
           c(N1,M,R2),
           R=R1+R2.
        большое спасибо Swetlana. Если можеш переделать, вот уточнение к задаче №2
        user posted image
          ExpandedWrap disabled
            predicates
            c(integer,integer,real)
             
            goal
              clearwindow,
              c(5,3,X), write(X).
             
            clauses
             
            c(N,0,1):- N>0.
            c(N,M,0):- M>N, N>=0.
            c(N,N,1):- N>=0.  
            c(N,M,R):-
               N1=N-1,
               M1=M-1,
               c(N1,M1,R1),
               c(N1,M,R2),
               R=R1+R2.
            такая задача. нужно сделать на турбо пролог 2:
            Пусть дано три числа. Если они могут бить длинами сторон треугольника опредилите его вид (прямоугольний, тупоугольний, остроугольний). Вичислите длину его висот и напичатайте их в порядке убивания.
            зарания спс.

            Добавлено
            2. y=sin(x)+sin(sin(x))+...+sin(sin(sin...sin(x)))

            3. пускай дано n - натуральное число, І. сколько цифр в числе? ІІ. Чему равна сума цефр в чесле. Пример: 23 - І. в числе 2 цифр. ІІ. сума цифр равна 5.
            зарания спс.
              Цитата
              2. y=sin(x)+sin(sin(x))+...+sin(sin(sin...sin(x)))

              Константа n -количество слагаемых в сумме.

              ExpandedWrap disabled
                constants
                n=3
                predicates
                sum(integer,real,real,real)
                 
                clauses
                 
                sum(M,_,S,S):-
                  M=n,!.
                sum(M,X,S,Sum):-
                  M1=M+1,
                  X1=sin(X),
                  S1=S+X1,
                  sum(M1,X1,S1,Sum).
                 
                 
                goal
                 clearwindow,
                 write("Input X="), readreal(X),
                 X0=sin(X),S0=X0,
                 sum(1,X0,S0,S), write(S),nl.


              Добавлено
              Цитата
              3. пускай дано n - натуральное число, І. сколько цифр в числе? ІІ. Чему равна сума цефр в чесле. Пример: 23 - І. в числе 2 цифр. ІІ. сума цифр равна 5.


              ExpandedWrap disabled
                predicates
                d(integer,integer,integer)
                 
                clauses
                 
                d(0,0,0):-!.
                d(X,C,S):-
                  X1=X div 10,
                  Y1=X-X1*10, %poslednja cifra
                  d(X1,C1,S1),
                  C=1+C1,
                  S=Y1+S1.
                 
                 
                goal
                 clearwindow,
                 write("Input X="), readint(X),
                 d(X,C,S), write(C," ",S),nl.
                Еще надо решить такие задачи в Turbo Prolog (тема: Списки):

                21. Создайте предикат, вычисляющий по списку и числу, подсписок исходного списка, начинающийся с элемента с указанным номером.

                39. Создайте предикат, формирующий список простых чисел, не превосходящих данного числа.
                Сообщение отредактировано: c68c15 -
                  Цитата
                  21. Создайте предикат, вычисляющий по списку и числу, подсписок исходного списка, начинающийся с элемента с указанным номером.


                  ExpandedWrap disabled
                    domains
                    list = integer*
                     
                    predicates
                    sublist(integer,integer,list,list)
                     
                     
                    clauses
                    sublist(_,_,[],[]):-!.
                    sublist(N,N,L,L):-!.
                    sublist(M,N,[H|T],T1):-
                      M<N,
                      M1=M+1,
                      sublist(M1,N,T,T1).
                      
                     
                    goal
                      write("N="), readint(N),
                      write("L="), readterm(list,L),
                      sublist(1,N,L,L1),write(L1),nl.
                    Цитата
                    39. Создайте предикат, формирующий список простых чисел, не превосходящих данного числа.


                    Предикат p формирует список целых чисел от 2 до N.
                    Предикат prostoe возвращает успех (истину), если число является простым.
                    Предикат d формирует список делителй числа N.



                    ExpandedWrap disabled
                      domains
                      list=integer*
                       
                      predicates
                      p(integer,integer,list)
                      prostoe(integer)
                      d(integer,integer,list)
                       
                      clauses
                       
                      p(M,N,[]):-
                        M>N,!.
                      p(2,N,[2|T]):-
                        p(3,N,T).
                      p(M,N,[M|T]):-
                        prostoe(M),!,
                        M1=M+2,
                        p(M1,N,T).
                      p(M,N,L):-
                        M1=M+2,
                        p(M1,N,L).  
                        
                          
                       
                      prostoe(N):-
                        d(2,N,L),
                        L=[N].  
                       
                      d(_,1,[]):-!.
                      d(X,N,[X|T]):-
                        N mod X=0,!,
                        N1=N div X,
                        d(X,N1,T).
                      d(X,N,L):-
                        X1=X+1,
                        d(X1,N,L).
                       
                      goal
                       clearwindow,
                       write("Input N="), readint(N),
                       p(2,N,L), write(L),nl.
                      Здравствуйте!!!помогите пожалуйста написать программку в Turbo Prolog:
                      Определить предикат member(Element,List),который истинен,если число Element является элементом списка List.Например member(2,[3,2,5]) истинно (Ответ:Yes).
                        http://www.intuit.ru/department/pl/plprolog/7/2.html
                          спасибо за ссылку))))))просто я совсем не понимаю что к чему((((,так что, извините... Как мне сделать вообще код всей этой проги,что бы всё работало?!плиз))))

                          хочется автомат по экз, который вообще не айс сдавать...
                            Кристина, научить вас читать я не могу. Если вы никогда не открывали ТурбоПролог и не видели ни одной программы, то вам рано получать экзамен-автомат. В разделе полно готовых программ, работающих со списками целых чисел. Любая подойдёт к этой задаче.
                            Для тех кому не айс, функционирует раздел "Помощь студентам".

                            Цитата
                            Пример. Создадим предикат, позволяющий проверить принадлежность элемента списку. Предикат будет иметь два аргумента: первый — искомое значение, второй — список, в котором производится поиск.

                            Построим данный предикат, опираясь на тот факт, что объект принадлежит списку, если он либо является первым элементом списка, либо элементом хвоста. Это может быть записано в виде двух предложений:

                            member(X,[X|_]). /* X — первый элемент списка */
                            member(X,[_|T]) :–
                            member(X,T). /* X принадлежит хвосту T*/

                            Заметим, что в первом случае (когда первый элемент списка совпадает с исходным элементом), нам неважно, какой у списка хвост, и можно в качестве хвоста указать анонимную переменную. Аналогично, во втором случае, если X принадлежит хвосту, нам не важно, какой элемент первый.

                            Отметим, что описанный предикат можно использовать двояко: во-первых, конечно, для того, для чего мы его и создавали, т.е. для проверки, имеется ли в списке конкретное значение. Мы можем, например, поинтересоваться, принадлежит ли двойка списку [1, 2, 3]:

                            member(2, [1, 2, 3]).

                            Получим, естественно, ответ: "Yes".

                            Подобным образом можно спросить, является ли число 4 элементом списка [1, 2, 3]:

                            member(4, [1, 2, 3]).

                            Ответом, конечно, будет "No".
                              Спасибочки большое+) =) =) =) =)
                                а можете помочь мне с программой,очень надо
                                30. Создайте предикат, генерирующий все перестановки элементов списка, указанного в качестве первого аргумента предиката.
                                35. Создайте предикат, осуществляющий подсчет числа вхождений каждого элемента исходного списка. Ответом должен быть список пар, в которых первая компонента - элемент исходного списка, вторая - число его вхождений в первоначальный список.
                                заранее благодарна ;)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (7) [1] 2 3 ...  6 7 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0442 ]   [ 15 queries used ]   [ Generated: 2.05.24, 21:35 GMT ]