Рефераты. Создание и обработка динамического списка p>6.2 Процедура ввода данных
0 Начало процедуры: void vvod(); Описываем локальные переменные
1 Резервируем область оперативной памяти размером равным размеру элемента и присваиваем указателю на последний элемент q адрес этой области: q=new(news)
2 Последовательно вводим данные внутренней структуры, на которую будет указывать указатель q. Ввод будем осуществлять с помощью последовательности операторов ввода scanf

12
3 Присваиваем указателю на первый элемент списка un и указателю на текущий элемент p значение указателя q. Присваиваем переменной i, которая содержит данные о числе элементов списка и переменной j, которая является параметром последующих циклов значение равное 1: un=q; p=q; j=1; i=1;
4 Открываем цикл с предусловием (условие: переменная j равна 1); в цикле будут выполняться шаги с 5 по 9: while (j==1)
5 Увеличиваем значение переменной i на единицу: i++
6 Резервируем область оперативной памяти размером равным размеру элемента и присваиваем указателю q адрес этой области: q=new(news);
7 Последовательно вводим данные внутренней структуры, на которую будет указывать указатель q. Ввод будем осуществлять с помощью последовательности операторов ввода scanf
8 Устанавливаем указатель введенного ранее элемента n на элемент, введенный шагом 7, а указателю p значение указателя q: p->n=q; p=q;
9 Вводим новое значение переменной j. Ввод будем осуществлять с помощью оператора ввода scanf
10 Закрываем цикл с предусловием: }
11 Устанавливаем указатель n текущего элемента на NULL: p->n=NULL;
12 Конец процедуры: }


6.3 Процедура вывода данных
0 Начало процедуры: void vivod(); Описываем локальные переменные
1 Устанавливаем указатель p на первый элемент списка, а переменную j, которая будет параметром следующего цикла, устанавливаем в 1: p=un; j=1;
2 Открываем цикл с предусловием (условие: переменная j меньше или равно i); в цикле будет выполняться шаги с 3 по 4: while (jn; j++;
5 Закрываем цикл с предусловием: }
6 Конец процедуры: }


6.4 Процедура удаления элемента заданного по имени
0 Начало процедуры: void dele(); Описываем локальные переменные
1 Указатель текущего элемента p устанавливаем в начало, а указатель первого элемента в списке un устанавливаем на следующий элемент: p=un; un=un->n;
2 Освобождаем область памяти, на которую указывает указатель текущего элемента p: delete p;
3 Значение переменной i, которая содержит данные о числе элементов в списке, уменьшаем на 1: i=i-1;
4 Конец процедуры

6.5 Процедура перемены мест элементов, которые заданы номерами
0 Начало процедуры: void pomen();Описываем локальные переменные
1 Вводим переменную k1, которая указывает на название первого элемента в операции перемены мест. Ввод будем осуществлять с помощью оператора ввода scanf
2 Устанавливаем указатель p на первый элемент списка: p=un;
3 Открываем цикл с заданным числом повторений (j=0…k1); в цикле будет выполняться шаг 4: for(j=1;jn;
5 Закрываем цикл с заданным числом повторений: }
6 Вводим переменную k2, которая указывает на название второго элемента в операции перемены мест. Ввод будем осуществлять с помощью оператора ввода scanf
7 Устанавливаем указатель p2 на первый элемент списка: p2=un
8 Открываем цикл с заданным числом повторений (j=0…k2); в цикле будет выполняться шаг 4: for(j=1;jn;

14
10 Закрываем цикл с заданным числом повторений: }
11 Переменной с присваиваем данные внутренней структуры, на которые указывает указатель текущего элемента p: с=p->g;
12 Данные внутренней структуры, на которые указывает указатель текущего элемента p2, копируем в переменные внутренней структуры, на которые указывает указатель текущего элемента p: p->g=p2->g;
13 Значение переменной g1 присваиваем переменным внутренней структуры, на которые указывает указатель текущего элемента p2: p2->g=с;
14 Конец процедуры: }

15
7. Отладка и тестирование программы

Суть процесса тестирования и отладки программы заключается в проверке правильности программы и исправлении найденных ошибок. В ходе процесса отладки и тестирования возникали следующие ошибки:

Statement missing ; - отсутствие знака конца оператора.

16
Список используемой литературы

1 В. В. Подбельский. Язык СИ++. - М.: Финансы и статистика, 2003.
2 Б. И. Березин, С. Б. Березин. Начальный курс С и С++. – М.: Диалог-МИФИ,
1998.

17

ПРИЛОЖЕНИЕ 1

18

19

20

21

ПРИЛОЖЕНИЕ 2
# include
# include
# include

struct gaseta{ char n[30]; char s[30]; int st;};

struct news{ games g; play *n;};

play *un,*p,*q;

int i;

void vvod()
{ int j; q=new(news); printf("Введите данные о 1 статьеn"); printf("Газета: "); scanf("%s",&q->g.n); printf("Статья: "); scanf("%d",&q->g.s); printf("Страница: "); scanf("%d",&q->g.st); un=q; p=q; j=1; i=1; while (j==1)
{ i++; q=new(news); printf("Введите данные о %d", i ); printf(" игреn"); printf("Газета: "); scanf("%s",&q->g.n); printf("Статья: "); scanf("%d",&q->g.s); printf("Страница: "); scanf("%d",&q->g.st); p->n=q; p=q; printf("Хотите продолжить? 1-да, 2-нетn");

22 scanf("%d",&j);
} p->n=NULL;
}

void vivod()
p=un; printf("+---------------+--------------+-------------+n");
}

void dele()
{ p=un; un=un->n; delete p; i=i-1; printf("Обработка выполненаn");
}

void pomen()
{ int j; char k1[30],k2[30]; gaseta c; news *p2; printf("введите первое название газетыn"); scanf("%s",&k1); p=un; while(strcmp(p->g.n,k1)!=0) p=p->n; printf("введите второе название газетыn"); scanf("%s",&k2); p2=un; while(strcmp(p2->g.n,k2)!=0) p2=p2->n; c=p->g; p->g=p2->g; p2->g=c; printf("Обработка выполненаn");
}

23

main ()
{ int a; clrscr(); a=1; while (a!=5)
{ printf("Нажмите одну из кнопокn"); printf("Ввод данных - 1n"); printf("Вывод данных - 2n"); printf("Удаление первого элемента - 3n"); printf("перемена мест - 4n"); printf("Выход - 5n"); a=getch(); switch(a)
{ case '1':vvod(); break; case '2':vivod(); break; case '3':dele(); break; case '4':pomen(); break; default: a=5; break;
}
} return 0;
}

24

ПРИЛОЖЕНИЕ 3
Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных- 3
Перемена мест - 4
Выход – 5
1
Введите данные о 1 статье
Газета: Комсомольская правда
Статья: о вреде курения
Страница: 12
Введите данные о 2 статье
Газета: Пенза плюс тв статья: проблемы
Страница: 6
Хотите продолжить? 1-да, 2-нет
1
Газета: Молодой ленинец
Статья: наркомания
Страница: 8
Хотите продолжить? 1-да, 2-нет
1
Газета: СПИД инфо
Статья: беременность
Страница: 20
Хотите продолжить? 1-да, 2-нет
1
Газета: московский комсомолец
Статья: пенсионная реформа
Страница: 9
Хотите продолжить? 1-да, 2-нет
2
Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных - 3
Перемена мест - 4
Выход – 5
2
Данные о газетах
+---------------+--------------+--------------+
| название | год выпуска | занимаемый объем |
| Комсомольская правда | о вреде курения|

12|
| Пенза плюс тв | проблемы|

6|
| Молодой ленинец | наркомания |

8|
| СПИД инфо | беременность|

20|
|Московский комсомолец| пенсионная реформа|

9|

25

Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных - 3
Перемена мест-4
Выход – 5
3
Удаление выполнено
Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных - 3
Перемена мест - 4
Выход – 5
2
Данные о газетах
+---------------+--------------+--------------+
| название | год выпуска | занимаемый объем |
| Пенза плюс тв | проблемы|

6|
| Молодой ленинец | наркомания |

8|
| СПИД инфо | беременность|

20|
|Московский комсомолец| пенсионная реформа|

9|

Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных - 3
Перемена мест - 4
Выход – 5
4
Введите название первой газеты
Пенза плюс тв
Введите название второй газеты
Молодой ленинец
Перемена мест выполнена
Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных - 3
Перемена мест - 4
Выход – 5
2
Данные о газетах
+---------------+--------------+--------------+
| название | год выпуска | занимаемый объем |
| Молодой ленинец | наркомания |

8|
| Пенза плюс тв | проблемы|

6|
| СПИД инфо | беременность|

20|
|Московский комсомолец| пенсионная реформа|

9|

26


Нажмите одну из кнопок
Ввод данных - 1
Вывод данных - 2
Удаление данных - 3
Перемена мест - 4
Выход – 5
5

27

----------------------- a

p->n=q; p=q;

void vvod ()

q=new(news)

Ввод q->g.n, q->g.s, q->g.st

un=q; p=q; j=1; i=1;

Цикл 1

Пока (j== 1)

i++; q=new(news);

Ввод q->g.n, q->g.s, q->g.st

Ввод j

Цикл 1

p->n=NULL;

Конец

a

p=un; j=1;

void vivod ()

Цикл 1

Пока (jg.n, q->g.s, q->g.st

p=p->n; j++;

Цикл 1

Конец

p=un; un=un->n

void dele ()

Конец

delete p i=i-1;

Цикл 1 j=1…k1

p=un;

Ввод k1

Цикл 1

void pomen ()

Цикл 1

p=p->n;

a

a

p2=un;

Ввод k2

Цикл 2 j=1…k2

p2=p2->n;

Конец

c=p->g; p->g=p2->g; p2->g=c;

b

c

d

e

e

d

c

b

pomen()

4

a

Конец

Цикл 1

a

vvod()

vivod()

dele()

a

1

2

3

Ввод a

Цикл 1

Пока a!=5

clrscr(); a=1;

Начало

Содержание

1 Постановка задачи 3

2 Разработка метода решения задачи и его формализация 4

3 Разработка состава структуры исходных данных и результата 7

4 Разработка алгоритма 8

5 Выбор языка программирования 12

6 Разработка программы 13

7 Отладка и тестирование программы 18

Список используемой литературы 19

Приложение 1: схема программы 20

Приложение 2: листинг программы 25

Приложение 3: результаты выполнения программы 29

Масса

КР-2201-14-03-ПЗ

Лит.

Масштаб

ПТИ гр.02В2

Изм

Лист

№ докум.

Подпись

Дата

Разраб.

Пров.

Н.-конт.

Утв.

Т.-конт.

Лист 2

Листов 27

Данилина Н.П.

Новокшонов МС

Создание и обработка динамического списка.

Пояснительная записка

Указатель на первый элемент

Внутренняя структура


Указатель на следующий элемент

Внутренняя структура


NULL

Внутренняя структура


Указатель на следующий элемент


Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.