Автор: Пользователь скрыл имя, 13 Сентября 2011 в 01:00, курсовая работа
В программе используются следующие определения.
Граф представляет собой множество точек (вершин, узлов) вместе с линиями, соединяющими некоторые или все пары точек. Направленные линии со стрелками называют дугами, не имеющие направления – ребрами.
1. ЗАДАНИЕ.
2. ОПИСАНИЕ ПРИМЕНЕНИЯ.
2.1. Постановка задачи.
2.2. Обращение к программе.
2.3. Входные данные.
2.4. Выходные данные.
2.5. Сообщения.
2.5.1. Информационные сообщения.
2.5.2. Сообщения об ошибках.
3. ОПИСАНИЕ ПРОГРАММЫ.
3.1. Структура программы.
3.2. Описание модулей.
3.2.1. main – главный модуль.
3.2.2. vvod – функция ввода данных.
3.2.3. vivod– функция вывода матрицы.
3.2.4. matrica_dopolnenii– функция получения дополнения графа.
3.2.5. matrica_sviaznosti – функция матрицы связности графа.
3.2.6. comp_sv– функция количества компонент связности.
4. ОТЛАДКА ПРОГРАММЫ.
4.1. План отладки.
4.2. Проектирование тестов программы.
4.2.1. Тесты черного ящика.
4.2.2. Тесты белого ящика.
4.3 Отладочные средства.
4.4 Отладка программы.
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЯ
int gr[NMAX][NMAX];
int mtrsv[NMAX][NMAX]; /* матрица связности графа */
int kol; /*Количество компонент связности */
printf ("\nZadanie: Podchitat kol-vo /* Вывод сообщения №1 */
komponent sviaznosti v dopolnenii zadannogo grafa.\n");
printf ("\n Vvedite kol-vo verchinot 2 do 150\n"); /*Вывод сообщения №2*/
do
{ scanf("%d",&n); /*Ввод количества вершин */
if (n<2)
printf("\n Error!!!Vvedite kol-vo verchin ot 2 do 150!\n");
if (n>NMAX)
/*Вывод сообщения №7 */
printf ("\n Error!!!Vvedite kol-vo verchin ot 2 do 150!\n");
}
while (n<2||n>NMAX);
/*Вывод сообщения №3 */
printf ("\n Vvedite rebra grafa (ctrl+z).\n");
vvod (n,gr); /* Матрица смежности */
printf("\n Matrica smegnosti:\n\n"); /*Вывод сообщения №4 */
vivod (n,gr);
matrica_dopolnenii(n,gr);
printf ("\n Matrica dopolnenia grafa:\n\n");
vivod (n,gr); /*Вывод матрицы дополнения */
matrica_sviaznosti(n,gr,mtrsv)
kol=comp_sv(n,
mtrsv); /*Количество
компонент связности*/
printf("\n\n\n Kolichestvo component sviaznosti:%d",kol);
getch ();}
Приложение 3. Текст программы модуля vvod
/**************************
/* Ввод перечня ребер в матрицу смежности графа gr[] [NMAX] */
/*
/**************************
#include"bibl.h"
vvod (int n,int gr[NMAX][NMAX])
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
gr[i][j]=0;
while (scanf("%d%d",&i,&j)==2)
{
if (i==j) /*Проверка на ошибку ввода */
printf ("\n Error!!! Vvedeno nedopustimoe znachenie!\n");
if (i>=n||i<0||j>=n||j<0) /*Проверка на ошибку ввода */
printf ("\n Error!!! Vvedeno nedopustimoe znachenie !\n");
if (gr[i][j]==1) /*Проверка на дублирование ребер*/
printf ("\n Error! Dublirovanie reber!\n");
else
{
gr[i][j]=1; gr[j][i]=1;
}
}
}
Приложение
4. Текст программы
модуля vivod
/**************************
/* Вывод матрицы смежности/дополнения графа */
/*
/**************************
#include"bibl.h"
vivod(int n,int gr[][NMAX])
{ int i,j; /*Номера вершин */
puts (" ");
{ for(i=0;i<n;i++) /*Построение таблицы матрицы */
printf(" %d",i);
printf("\n |");
for(i=0; i < n;i++)
printf("-");
for(j=0;j<n;j++)
{ printf("\n%dі",j);
for(i=0;i<n;i++)
printf("%d ", gr[i][j]);
}
} putchar('\n');
}
Приложение
5. Текст программы модуля
matrica_dopolnenii
/**************************
/*
Матрица дополнения
графа gr[NMAX][NMAX]
/*
Группа 28203 С.Н.
Трофимова
/**************************
#include"bibl.h"
void matrica_dopolnenii(int n,int gr[NMAX][NMAX])
{
int i,j; /*Номера
вершин
/*Построение матрицы дополнения графа */
/*заменой нулей единицами, единиц - нулями */
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
/*Обнуление главной диагонали */
for (i=0;i<n;i++)
{ gr[i][i]=0; }
}
Приложение
6. Текст программы
модуля matrica_sviaznosti
/**************************
/* Получение матрица связности графа gr[NMAX][NMAX] с */
/* использованием алгоритма Уоршела */
/*
/**************************
#include"bibl.h"
{ int i,j,k; /*Переменные цикла */
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
mtrsv[i][j]=gr[i][j];
}
for(k=0;k<n;k++)
for(i=0;i<n;i++)
if (mtrsv[i][k]==1)
for(j=0;j<n;j++)
mtrsv[i][j]=mtrsv[i][j]||
}
Приложение 7. Текст программы модуля comp_sv
/**************************
/*
Подсчет количества
компонент связности
/*
/**************************
#include"bibl.h"
int comp_sv(int n, int mtrsv[NMAX][NMAX])
{ int kol;
int i,j;
int vp[NMAX];
/*Вектор посещения
Информация о работе Количество компонент связности в дополнении заданного графа