Хелпикс

Главная

Контакты

Случайная статья





Алгоритм функции 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.  Конец.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.