Бинарные деревья
Контрольная работа - Компьютеры, программирование
Другие контрольные работы по предмету Компьютеры, программирование
]):-link(L1,L2,L3).([],[]).([X|Z],SORTLIST) :-(X, Z, S, L),(S, SORTS),(L, SORTL),(SORTS,[X|SORTL],SORTLIST).(_,[],[],[]).(X,[Y|TAIL], [Y|S],L):-X>Y,!,cmp(X,TAIL,S,L).(X,[Y|TAIL], S,[Y|L]):-cmp(X,TAIL,S,L).
isempty([]).%список пуст
%создание диалогового окна
dlg_dialog_Create(Parent):-_CreateResDialog(Parent,dlg_dialog_DlgType,dlg_dialog_ResID,dlg_dialog_eh,0).
GIN dialog, idc_sort _CtlInfo_dialog_eh(_Win,e_Control(idc_sort,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_list),=lbox_CountAll(L),>0,=lbox_GetAll(L),(S,S1),_Clear(L),_Add(L,S1),
!.
%проверка списка на наличие в нем элементов
dlg_dialog_eh(_Win,e_Control(idc_sort,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_list),=lbox_CountAll(List),=0,
dlg_Note("Ошибка","Список пуст"),
!.
%END dialog, idc_sort _CtlInfo
GIN dialog, idc_addelem _CtlInfo_dialog_eh(_Win,e_Control(idc_add_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_add),=win_GetCtlHandle(_Win,idc_list), =win_GetText(I),_len(EL,1),
chksmb(EL),_Add(O,EL), %добавление элемента в список_SetText(I,""), %очистка поля ввода
!.
%проверка на корректный ввод
dlg_dialog_eh(_Win,e_Control(idc_add_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_add),=win_GetText(O),="",
dlg_error("Ошибка","Элемент не задан"),_SetText(O,""),
!.
%проверка длины элемента
dlg_dialog_eh(_Win,e_Control(idc_add_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_add),=win_GetText(O),<>"",
dlg_error("Ошибка","Элемент должен состоять из 1 символа!"),
win_SetText(O,""),
!.
%END dialog, idc_addelem _CtlInfo
GIN dialog, при нажатии кнопки выхода idc_cancel _CtlInfo_dialog_eh(_Win,e_Control(idc_cancel,_CtrlType,_CtrlWin,_CtrlInfo),0):-!,_Destroy(_Win),
!.
%END dialog, idc_cancel _CtlInfo
GIN dialog, idc_del_elem _CtlInfo
%обработка ввода пользователя - проверка списка на наличие элементов
dlg_dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_list),(LIST,0,O),(LIST),
dlg_error("Ошибка","Список пуст"),
I=win_GetCtlHandle(_Win,idc_del),=win_GetCtlHandle(_Win,idc_befor),_SetText(I,""),_SetText(II,""),
!.
%проверка на заполнение обоих полей для удаления
dlg_dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_del),=win_GetCtlHandle(_Win,idc_befor),=win_GetText(I),=win_GetText(O),
DEL1"",_error("Ошибка","Укажите один элемент для удаления в одном поле"),
win_SetText(I,""),_SetText(O,""),
!.
%удаление конкретного элемента_dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_del),=win_GetCtlHandle(_Win,idc_list),=win_GetText(I),_len(EL,1),(EL),(LIST,0,O),(EL,LIST),(EL,LIST,LIST1),_Clear(O),(LIST1,O),
win_SetText(I,""),
!.
%удаление элементов перед указанным
dlg_dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_list),=lbox_CountAll(ListHandle),"",(LIST,0,ListHandle),(EL,LIST),
dlg_error("Ошибка","Удаление перед первым элементом невозможно"),
win_SetText(I,""),_SetText(O,""),
!.
%удаление элементов перед указанным_dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_list),=lbox_CountAll(ListHandle),"",_len(EL,1),(EL),(LIST,0,ListHandle),(EL,LIST),(EL,LIST,LIST1),_Clear(ListHandle),(LIST1,ListHandle),_SetText(BeforHandle,""),
!.
%обработка ввода пользователя:
%проверка на корректный ввод в поля элементов
dlg_dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_del),=win_GetCtlHandle(_Win,idc_befor),=win_GetText(I),=win_GetText(O),(DEL1,DEL2,DEL),="",
dlg_error("Ошибка","Элемент для удаления не указан"),
win_SetText(I,""),_SetText(O,""),
!._dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-=win_GetCtlHandle(_Win,idc_del),=win_GetCtlHandle(_Win,idc_befor),=win_GetText(O),<>"",=win_GetCtlHandle(_Win,idc_list),=lbox_CountAll(ListHandle),=1,
dlg_error("Ошибка","Число элементов должно быть четным"),
win_SetText(I,""),_SetText(O,""),
!._dialog_eh(_Win,e_Control(idc_del_elem,_CtrlType,_CtrlWin,_CtlInfo),0):-
dlg_error("Ошибка","Заданный элемент не существует"),
I=win_GetCtlHandle(_Win,idc_del),=win_GetCtlHandle(_Win,idc_befor),_SetText(I,""),_SetText(O,""),
!.
%END dialog, idc_delelem _CtlInfo
Программа и методика испытаний
Объект испытаний
Испытуемая программа lab3.exe предназначена для работы со списками и находит свое применение в области математических и программных дисциплин, требующих соответствующей обработки данных типа список.
Цель испытаний
Испытание проводилось с целью выявления корректности выполнения программы обработки списков; отсутствия ошибочных, либо неопределенных ситуаций, возникающих в результате выполнения программы; отсутствия сбоев систем компьютера в результате работы программы.
Средства и порядок испытаний
Требования к техническим средствам:
ЭВМ модели - Pentium 4 и выше.
Объем ОЗУ - 1 Гб,
Объем свободной памяти на жестком диске 1 Гб
Программное обеспечение - операционная система Windows 2000\NT\XP.
Специальной конфигурации программного обеспечения не требуется.
Испытание программы проводились в следующем порядке:
- испытание на корректность (адекватно ли программа реагирует на ввод вывод информации);
- испытание на правильность;
- испытание на надежность (процент отказа системы).
Если итог проведения испытаний удовлетворяет заданным критериям, то проведение испытаний считается успешным.
Методы испытаний
Проверка на корректность
Проверка при использовании входных данных:
- Поле "элемент" было заполнено значениями: 1,9,2,8,3,7,4,6,5,0,а,б;
- Поле "перед" было заполнено значением 3;
- При нажатии на кнопку "Сортировка" результат совпал
- с ожидаемым (рис. 2).
- При нажатии на кнопку "Удалить" результат совпал
- с ожидаемым (рис. 3).
- При попытке добавления элемента с длиной более 1 символа в список, добавление не указанного элемента, удаление не указанного элемента,
Удаление перед первым элементом, выдается сообщение об ошибке (рис. 4, рис. 5, рис. 6, рис. 7, рис. 8);
Проверка на корректный вывод информации
При выводе отсортированного списка результат не отличался от ожидаемого (см. рис. 2). При удалении элемента 0 из списка перед указанным, результат не отличался от ожидаемого