Бинарные деревья

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

]):-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 из списка перед указанным, результат не отличался от ожидаемого