Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Решить следующие задачи
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
skreggi skreggi вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 26.03.2012
По умолчанию Решить следующие задачи - 26.03.2012, 00:12

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

Исходный код:

prolog Код:
domains
ilist=integer*
i=integer
predicates
gen(i,i,i,ilist).
vvod(i,i,i).
print(i,i,i,ilist).
invert(ilist,ilist).
peremesh(ilist,ilist,ilist).
p(ilist,ilist).
clauses
vvod(N,M,K):-write("vvedite M:"),readint(M),nl,
write("vvedite K:"), readint(K),nl,write("vvedite Kol-vo:"),readint(N).
gen(0,_,_,[]):-nl,!.
gen(N,M,K,[H|Tail]):-N1=N-1, gen(N1,M,K,Tail),
        A=K+1-M, random(A,B), H=B+M.
   
   print(0,0,0,[]):-!.
print(Neg,Poz,Nll,[H|T]):- H<0,!,print(Neg1,Poz,Nll,T),Neg=Neg1+1.
print(Neg,Poz,Nll,[H|T]):-H=0,!,print(Neg,Poz,Nll1,T),Nll=Nll1+1.
print(Neg,Poz,Nll,[H|T]):-H>0,!,print(Neg,Poz1,Nll,T),Poz=Poz1+1.  
 
 
invert(L, Otvet):-peremesh(L, [], Otvet).
peremesh([ ], Otvet, Otvet):- !.
peremesh([H|T], Novspis, Otvet):- peremesh(T, [H|Novspis], Otvet).
 
p([X|L],[X,X,X|L1]) :- p(L,L1).
p([],[]).
   
goal
vvod(N,M,K),gen(N,M,K,L),print(Neg,Poz,Nll,L),invert(L, Otvet),p(L,L1).

это реализовано Visual Prolog 5.2
Мне нужно переделать эту программу под визуальное оформление(с формой и компонентами). Проблема в том что там отличается процесс написания программы, а до этого с визуальным оформлением я не работал. Прошу помощи, буду очень благодарен!
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,843
Сказал(а) спасибо: 2
Поблагодарили 285 раз(а) в 285 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 26.03.2012, 10:29

Сам код я помогу переделать под VIP7. А вот визуальное оформление лучше Вы делайте сами, а что непонятно - задавайте конкретные вопросы.
Для запуска в VIP7 Вашей программы вот этот фрагмент
Цитата:
Сообщение от skreggi Посмотреть сообщение
domains
ilist=integer*
i=integer
predicates
gen(i,i,i,ilist).
vvod(i,i,i).
print(i,i,i,ilist).
invert(ilist,ilist).
peremesh(ilist,ilist,ilist).
p(ilist,ilist).
замените этим:
Visual Prolog Код:
class predicates
gen:(integer,integer,integer,integer*).
vvod:(integer,integer,integer).
print:(integer,integer,integer,integer*).
invert:(integer*,integer*).
peremesh:(integer*,integer*,integer*).
p:(integer*,integer*).

p.s. Сразу не сообразил. Если Вам надо сделать визуальное оформление в VIP5.2, то конечно же ничего менять в объявлениях не надо. Создайте vpi-приложение и нарисуйте в диалоговом окне нужные Вам элементы. Если получится, то я отвечу что и как делать дальше.

Последний раз редактировалось Винитарх; 26.03.2012 в 10:35
Ответить с цитированием
Пользователь сказал cпасибо:
skreggi (26.03.2012)
  (#3 (permalink)) Старый
skreggi skreggi вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 26.03.2012
По умолчанию 26.03.2012, 21:37

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Сам код я помогу переделать под VIP7. А вот визуальное оформление лучше Вы делайте сами, а что непонятно - задавайте конкретные вопросы.
Для запуска в VIP7 Вашей программы вот этот фрагмент
замените этим:
Visual Prolog Код:
class predicates
gen:(integer,integer,integer,integer*).
vvod:(integer,integer,integer).
print:(integer,integer,integer,integer*).
invert:(integer*,integer*).
peremesh:(integer*,integer*,integer*).
p:(integer*,integer*).

p.s. Сразу не сообразил. Если Вам надо сделать визуальное оформление в VIP5.2, то конечно же ничего менять в объявлениях не надо. Создайте vpi-приложение и нарисуйте в диалоговом окне нужные Вам элементы. Если получится, то я отвечу что и как делать дальше.
именно под VIP5.2, нужно зделать. Форму зделал, вылаживаю скриншот + то что в коде внес, пока только зделал инвертирования списка и то я его задаю строкового типа а нужно целыми числами и чтоб они были рандомными в диапазоне, пока на этом загруз(

исходный код того что сделал вписывая сам(стандартные части кода не вылаживаю):
prolog Код:
domains
%lilist=integer*
i=integer
  lilist=string*
predicates
%nondeterm gen(i,i,i,lilist)
%nondeterm vvod(i,i,i)
%nondeterm print(i,i,i,lilist)
%nondeterm invert(lilist,lilist)
%nondeterm peremesh(lilist,lilist,lilist)
nondeterm p(lilist,lilist)

  nondeterm rev(lilist,lilist)
  nondeterm append(lilist,lilist,lilist)
  nondeterm addlbox(WINDOW,lilist)
  task_win_eh : EHANDLER


clauses
/*
vvod(N,M,K):-!, HEdit1=win_GetCtlHandle(_Win,idc_edit6),Tedit1=win_gettext(HEdit1),str_int(Tedit1,M),
HEdit2=win_GetCtlHandle(_Win,idc_edit7),Tedit2=win_gettext(HEdit2),str_int(Tedit2,K),
HEdit3=win_GetCtlHandle(_Win,idc_edit8),Tedit3=win_gettext(HEdit3),str_int(Tedit3,N).

*/


 append([],L,L).
  append([H|T],L2,L3):-
    append(T,[H|L2],L3),
  rev([],[]).
  rev(L,L1):-
    append(L,[],L1).
  addlbox(_,[]).    
  addlbox(HWin,[H|T]):-
    lbox_Add(HWin,-1,H),
    addlbox(HWin,T).

   
    p([X|L],[X,X,X|L1]) :- p(L,L1).
p([],[]).

/*
gen(0,_,_,[]):- !.
gen(N,M,K,[H|Tail]):-N1=N-1, gen(N1,M,K,Tail),
        A=K+1-M, random(A,B), H=B+M.
gen(N,M,K,L).
   
   print(0,0,0,[]):-!.
print(Neg,Poz,Nll,[H|T]):- H<0,!,print(Neg1,Poz,Nll,T),Neg=Neg1+1.
print(Neg,Poz,Nll,[H|T]):-H=0,!,print(Neg,Poz,Nll1,T),Nll=Nll1+1.
print(Neg,Poz,Nll,[H|T]):-H>0,!,print(Neg,Poz1,Nll,T),Poz=Poz1+1.  


%invert(L, Otvet):-peremesh(L, [], Otvet).
%peremesh([ ], Otvet, Otvet):- !.
%peremesh([H|T], Novspis, Otvet):- peremesh(T, [H|Novspis], Otvet).


*/



%BEGIN Task Window, idc_push_button _CtlInfo
  task_win_eh(_Win,e_Control(idc_push_button,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
 % vvod(N,M,K),LBWin=win_GetCTLHandle(_Win,idc_list_1), lbox_Clear(LBWin),gen(N,M,K,L),  addlbox(LBWin,L)
 L=["1","2","3","a","b","c"],
 %vvod(N,M,K)
 % HEdit1=win_GetCtlHandle(_Win,idc_edit6),Tedit1=win_gettext(HEdit1),str_int(Tedit1,M),
%HEdit2=win_GetCtlHandle(_Win,idc_edit7),Tedit2=win_gettext(HEdit2),str_int(Tedit2,K),
%HEdit3=win_GetCtlHandle(_Win,idc_edit8),Tedit3=win_gettext(HEdit3),str_int(Tedit3,N)
 
 %gen(N,M,K,L),
  LBWin=win_GetCTLHandle(_Win,idc_list_1),
  lbox_Clear(LBWin),
  addlbox(LBWin,L),
  rev(L,L1),
  LBWin1=win_GetCTLHandle(_Win,idc_list_2),
  lbox_Clear(LBWin1),
  addlbox(LBWin1,L1),
 LBWin2=win_GetCTLHandle(_Win,idc_list_3),
  lbox_Clear(LBWin2),
  addlbox(LBWin2,L2)
 ,!.
%END Task Window, idc_push_button _CtlInfo

потихоньку продвигаюсь....удалось утроить список=)

скриншоты формы:
Миниатюры
nedheioio.jpg  

Последний раз редактировалось skreggi; 26.03.2012 в 22:17
Ответить с цитированием
  (#4 (permalink)) Старый
skreggi skreggi вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 26.03.2012
По умолчанию 27.03.2012, 17:06

вопрос решился, можно считать закрытым.
Ответить с цитированием
  (#5 (permalink)) Старый
KilloBit KilloBit вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.11.2014
По умолчанию 06.11.2014, 11:32

Цитата:
Сообщение от skreggi Посмотреть сообщение
вопрос решился, можно считать закрытым.
можешь выложить исходник, если все еще остался, пожалуйста.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
skreggi skreggi вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 26.03.2012
По умолчанию 07.11.2014, 20:58

уже институт закончил а программа осталась)) в архиве найдёш программу с отчётом.
с тебя спасибо!!
Вложения
Тип файла: zip IDZ.zip (305.9 Кб, 2 просмотров)
Ответить с цитированием
Пользователь сказал cпасибо:
Alexiski (08.11.2014)
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачи........ 77799 Assembler 2 09.11.2011 00:03
Хочу купить ноутбук под следующие задачи. sergeyshat Ноутбуки и нетбуки 3 17.07.2011 12:02
С++ Задачи как их решить Sparado Вопросы начинающих программистов 0 16.06.2011 21:34
Задачи как их решить Eclipse Вопросы начинающих программистов 0 07.06.2011 23:10
Как на липсе решить задачи kler Вопросы начинающих программистов 1 16.05.2011 20:11
Помогите решить задачи Gros Prolog 1 27.12.2009 18:55
Помогите решить задачи Vovchik4417 Prolog 0 11.12.2009 17:56
Нужно решить задачи на СИ spapin Задания за деньги 5 26.10.2008 23:33
Помогите решить задачи SH@DOW Юмор 12 18.09.2006 16:10
Требуется решить 2 задачи i'm visible Pascal 19 23.11.2005 15:10
Требуется решить две задачи zich Pascal 4 13.10.2005 22:34
Как решить задачи на предикаты Anonymous Prolog 0 27.05.2003 10:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов