Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование4172 / Лекции / Лекция 25. Примеры решения экзаменационных задач..doc
Скачиваний:
48
Добавлен:
12.03.2015
Размер:
111.62 Кб
Скачать

Решение.

Пример орграфа и матрицы инцидентности:

| 0 1 2 3 4 5

0 1 -------------------------------

0 | -1 0 0 1 0 0

4 mi = 1 | 1 -1 0 0 1 0

3 2 2 | 0 1 1 0 0 0

3 | 0 0 -1 -1 -1 2

5

Пример результата выполнения функции:

Вершина Число предшественников

  1. 1

  2. 2

  3. 2

  4. 1

Фрагмент программы:

#define NMAX 10 /* макс. число вершин */

#define RMAX 100 /* макс. число ребер (дуг) */

/*---------------------------------------------------------*/

/* функция вывода числа предшественников каждой вершины */

/*---------------------------------------------------------*/

void KolPred( int mi [NMAX][RMAX], int n, int d )

/* Входные данные: mi – матрица инцидентности ,

n – количество вершин ,

d – количество дуг */

{ int i,j ; /* индексы строки и столбца матрицы */

int kpred; /* количество предшественников очередной вершины */

puts ("\n Вершина Число предшественников");

for (i=0; i<n; i++)

{

for (j=0, kpred=0; j<d; j++)

if (mi[i][j] == 1 || mi[i][j] ==2) kpred++;

printf (" %d \t\t %d\n", i, kpred);

}

putchar ('\n');

}

/* Пример вызова функции */

int g2 [NMAX][RMAX] ; /* м-ца инцидентности */

n , /* количество вершин */

d ; /* количество дуг */

. . .

KolPred (g2, n, d );

Пример 6. Дан орграф в виде матрицы смежности и числа вершин. Описать функцию вывода числа предшественников каждой вершины. Привести пример вызова этой функции.

Решение.

Пример орграфа и матрицы смежности:

| 0 1 2 3

----------------------

0 | 0 1 0 0

ms = 1 | 0 0 1 0

2 | 0 0 0 0

3 | 1 1 1 1

Пример результата выполнения функции:

Вершина Число предшественников

  1. 1

  2. 2

  3. 2

  4. 1

Фрагмент программы:

#define NMAX 10 /* макс. число вершин */

/*---------------------------------------------------------*/

/* функция вывода числа предшественников каждой вершины */

/*---------------------------------------------------------*/

void KolPred( int ms [NMAX][NMAX], int n)

/* Входные данные: ms – матрица смежности ,

n – количество вершин */

{ int i,j ; /* индексы строки и столбца матрицы */

int kpred; /* количество предшественников очередной вершины */

puts ("\n Вершина Число предшественников");

for (j=0; j<n; j++)

{

for (i=0, kpred=0; i<n; i++)

if (mi[i][j] == 1) kpred++;

printf (" %d \t\t %d\n", j, kpred);

}

putchar ('\n');

}

/* Пример вызова функции */

int g2 [NMAX][RMAX] ; /* м-ца инцидентности */

n , /* количество вершин */

d ; /* количество дуг */

. . .

KolPred (g2, n, d );

Рекомендуемая литература

а) Основная литература

1. Хохлов Д.Г. Введение в программирование: Учебное посо­бие.- Казань: Изд-во Казан. техн. ун-та, 2005. - 136 с.

2. Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы. Учебное пособие. - Казань: Изд-во Казан. техн. ун-та, 2006. - 100 с.

3. Хохлов Д.Г., Захарова З.Х. Введение в программирова­ние. Практикум на языке С: Учебное пособие. - Казань: Изд-во Казан. техн. ун-та, 2006. - 96 с.

4. Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие.- Казань: Изд-во Казан. техн. ун-та, 2005. - 48 с.

5. Бикмурзина А.Р. Лабораторный практикум по программированию. - Казань: КГТУ, 2000 г., 2007 г.

6. Хохлов Д.Г. Основы технологии модульного программирования. Учебное пособие. - Казань. Изд-во Казан. техн. ун-та , 2005. - 64 с.

7. Хохлов Д.Г. Программирование на языке высокого уровня. Часть 1: Основы программирования: Учебник. - Казань: Кафедра АСОИУ, 2007. - 248 с.

8. Хохлов Д.Г. Программирование на языке высокого уровня. Часть 2: Методы программирования: Учебник. - Казань: Мастер Лайн, 2006. - 266 с.

9. Павловская Т.А. С/С++. Программирование на языке высокого уровня. - СПб: Питер, 2004. - 461с.

10. Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. - СПб: Питер, 2002. - 240с.

б) Дополнительная литература

11. Керниган Б., Ритчи Д. Язык программирования Си.- М.: Финансы и статистика, 2002. - 279 с.

12. Вирт Н. Алгоритмы + структуры данных = программы. - М.: Мир, 1985. - 406 с.

13. Липский В. Комбинаторика для программистов. - М.: Мир, 1988.- 213 с.

14. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. - М.: МЦНМО, 2000. - 960 с.

15. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные ал­горитмы. Теория и практика. - М.: Мир, 1980. - 476 с.

16. Гудман С., Хидетниеми С. Введение в разработку и ана­лиз алгоритмов. - М.: Мир, 1981. - 368 с.

17. Кнут Д. Искусство программирования на ЭВМ. Т. 1. Ос­новные алгоритмы. - М.: Издат. Дом «Вильямс», 2000. - 720 с., Т. 2. Получисленные алгоритмы. - М.: Издат. Дом «Вильямс», 2000. - 832 с., Т. 3. Сортировка и поиск. - М.: Издат. Дом «Вильямс», 2000. - 832 с.

18. Холл П. Вычислительные структуры. Введение в не­численное программирование. - М.: Мир, 1978. - 214 с.

19. Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ.- М.: Наука, 1986. - 272 с.

250