|
|||
Алгоритм функции GetNumber
Федеральное агентство по образованию Российской Федерации
Тульский государственный университет
Кафедра прикладной математики и информатики
Курс: Практикум на ЭВМ
Отчет по лабораторной работе №1. 4
«Работа с динамическими структурами данных»
Выполнил: ст. гр. 520201 Насонов А. Н.
Проверил: доц. каф. ПМиИ Скобельцын С. А.
Тула, 2011 ЦЕЛЬ РАБОТЫ приобретениепрактических навыков работы с указателями, оперирования с динамическими переменными для различных структур данных (в частности, списков) на языке Pascal.
ЗАДАНИЕ разработать алгоритм, составить и отладить программу решения задачи с использованием указателей.
ПОСТАНОВКА ЗАДАЧИ построить линейный список из нескольких динамических переменных, содержащих вводимые вещественные числа. Преобразовать список так, чтобы в начале располагались отрицательные элементы, а затем положительные. Нули располагаются в конце списка. Вывести полученный список.
АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ: Разобьем нашу программу на ряд подпрограмм – procedure CreateList – создание списка, function GetNumber – преобразования строки в число и выдача ошибки в противном случае, procedure DeleteList – уничтожение списка, procedure MoveElem – перемещение элемента, procedure SortList – сортировка списка по указателям, procedure ViewList – вывод списка.
Алгоритм процедуры CreateList ( var root: PList; var k: integer) Заданы указатель на начало списка root, число элементов списка k, которое в дальнейшем будет подсчитываться в процедуре. 1. Выделение динамической памяти под первый элемент; создаем его пустым 2. k=0; первоначальное число элементов списка 3. ActivePoint=root; указатель на текущее положение – на начало 4. Если введено не число (функция GetNumber(buf, k) возвращает истинное значение), то 5. Если доступной динамической памяти меньше, чем требуется для выделения под элемент списка, то к п. 6, иначе к п. 8 6. Вызов процедуры удаление списка, 7. Переход к п. 16 8. Выделение памяти под NewElem; новый элемент 9. k=k+1; 10. NewElem^. value=buf; заносим значение числа в поле value записи NewElem 11. ActivePoint^. Next=NewElem; полю next записи ActivePoint присвоить значение указателя NewElem 12. ActivePoint=NewElem; 13. ActivePoint^. Next=nil; указатель на следующий элемент списка нулевой(не существует) 14. Переход к п. 4 15. ActivePoint^. Next=nil; указатель на следующий элемент списка нулевой(не существует) 16. Конец. Алгоритм функции GetNumber ( var buf: real) Заданы: buf – буферная переменная под вводимое вещественное число.
1. Getnumber=false; присвоить функции ложное значение 2. buf=0; 3. Ввод строки s 4. Если Length(s)=0 то к п. 10; длина строки равна 0 5. Val(s, w, errCode); преобразовать введенную строку в число 6. Если errCode=0 то к п. 9, 7. Вывод ошибки 8. Переход к п. 3 9. GetNumber=true; присвоить функции истинное значение 10. Конец.
|
|||
|