Автор работы: Пользователь скрыл имя, 22 Декабря 2011 в 22:28, курсовая работа
Целью работы является написание программы на языке программирования, которая из заданного графа выделяла бы максимальный полный подграф с заданным числом вершин. Также представлены результаты решения контрольных примеров, выполненные с помощью разработанной программы.
Для реализации задачи была выбрана программная среда Microsoft Visual C++ 6.0. Решение поставленной задачи в данной работе представлено с помощью пузырькового метода сортировки (на основе сравнений).
На рис.5 представлен пример в случае n=4. Тогда человек 1 должен иметь 3 знакомства (от вершины 1 исходит 3 ребра), человек 2 и 3 имеют по 2 знакомства и человек 4 имеет только одно.
Рис. 5 Пример графа для n=4.
Итак,
мы видим, что условие задачи выполняется.
Пример выходного файла, имеющийся
ранее, является верным.
2.3 Тестовый
пример.
Для проверки правильности нашей алгоритм-программы занесем в файл входных данных input.txt другие числа. Результаты представлены на рис. 6 и 7.
Рис. 6
Окно входного файла
Рис.7
Окно выходного файла
Программный продукт для решения задачи создан в среде разработки Visual Studio 9.0, тестирование производилось на аппаратной платформе (заявленные характеристики): ОС Windows 7, процессор Pentium Dual Core, частота 2200 МГц, частота шины процессора 800 МГц.
Таким образом, при предоставлении указанных выше необходимых аппаратных и программных средств, созданный программный продукт будет иметь наилучшую реализацию. Однако возможно использование и других совместимых сред программирования и аппаратных платформ.
Требования технологического характера:
Данная
система является автоматизированной,
следовательно, предполагается наличие
пользователя, который будет управлять
поведением системы.
Для реализации задачи пользователю необходимо:
ЗАКЛЮЧЕНИЕ
В результате выполнения курсовой работы была разработана программа, позволяющая находить максимальный полный подграф данного графа.
Кроме практических результатов при выполнении курсовой работы был изучен теоретический материал по теме «Теория графов», изучен метод пузырьковой сортировки, рассмотрены основные понятия и принципы, признаки, характерные для задач, решаемых этим методом, а также разработан алгоритм решения поставленной задачи.
Таким
образом, на основании представленного
тождества решений тестового
примера можно сделать вывод
о достоверности реализованного
алгоритма и созданного на его основе
программного продукта.
БИБЛИОГРАФИЧЕСКИЙ
СПИСОК
ПРИЛОЖЕНИЕ
Листинг программы:
#include "stdafx.h"
struct Man{
int num;
int acq;
};
struct Meeting{
Man man1;
Man man2;
};
void Sort(int n_people, Man *People){
Man temp;
for(int i=0; i<n_people; i++){
for(int j=0; j<n_people-1; j++){
if(People[j]
temp=
People
People
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n_people=0, summeet=0, bar=0, sur=0, sumgr2=0;
bool oblom=false;
FILE *in=fopen("Input.txt", "r"), *out=fopen("Output.txt", "w");
fscanf(in, "%d", &n_people);
Man *People=new Man[n_people];
for(int i=0; i<n_people; i++){
People[i].num=i+1;
fscanf(in, "%d", &People[i].acq);
}
for(int i=0; i<n_people; i++)
summeet+=People[i]
if(summeet%2==0)
summeet/=2;
else oblom=true;
if(!oblom){
Meeting *Meetings=new Meeting[summeet];
Sort(n_people, People);
for(int i=n_people-1; i>0; i--){
if(People[i]
bar=i+
break;
}
}
Man *Group1=new Man[bar];
Man *Group2=new Man[n_people-bar];
for(int i=0, j=0; i<n_people; i++){
if(i<bar) Group1[i]=People[i];
else{
Group2
j++;
}
}
for(int i=0; i<bar; i++){
Group1[i].
sur+=Group1[
}
for(int i=0; i<n_people-bar; i++)
sumgr2+=
if(sur==sumgr2){
for(int i=0; i<n_people-bar; i++){
for(
Group2
}
}
else oblom=true;
if(!oblom){
for(int i=0; i<bar; i++)
if(
}
}
if(!oblom){
for(int i=0, k=0; i<n_people; i++){
for(
}
People
}
fprintf(out, "%d\n", bar);
for(int i=0; i<summeet; i++)
fprint
}
delete []Group1;
delete []Group2;
delete []Meetings;
}
if(oblom)
fprintf(out, "NO");
fclose(in);
fclose(out);
delete []People;
return 0;
}