Контрольная работа по "Программированию"
Автор: Владимир • Март 21, 2019 • Контрольная работа • 2,138 Слов (9 Страниц) • 410 Просмотры
Содержание
1 Задание 3
2 Блок-схемы алгоритмов 4
3 Листинг программы 6
4 Результат выполнения 9
Список литературы 10
Задание
Разработать программу реализующую генерирование графа дружеских отношений и вывод его на экран, считывание данных для построения графа производить из файла.
Представление графа: матрица смежности, граф смешанный.
Реализовать функцию, находящую ответ на вопрос:
«Если я твой друг, то ты мой друг?»
Блок-схемы алгоритмов[pic 1]
GenerateMatrix(n, AM)
Конец
- Блок - схема функции генерации графа
[pic 2]
isFriends(n, AM, index)
Конец
- Блок - схема функции, находящей ответ на вопрос: «Если я твой друг, то ты мой друг?»
Листинг программы
#include
#include
#include
#include "time.h"
using namespace std;
void PrintAdjMatrix(int n, int **AM, char **names)
//вывод матрицы смежности
//n - размерность матрицы,
//AM - матрица смежности
//names - массив имен
{
int i, j;//счетчики циклов
cout << "Матрица смежности графа дружеских отношений" << endl;
cout << " Имя |";
for (i = 0; i < n; i++)//выводим заголовки столбцов
{
cout.width(9);//количество позиций под вывод
cout.setf(ios::left);//выравнивание по левому краю
cout << names[i] << "|";//вывод имени
}
cout << endl;
for (i = 0; i < (n + 1) * 10; i++)//вывод линии
cout << "-";
cout << endl;
for (i = 0; i < n; i++)//цикл по строкам
{
cout.width(9);//количество позиций под вывод
cout.setf(ios::left);//выравнивание по левому краю
cout << names[i] << "|";//вывод имени
for (j = 0; j < n; j++)//цикл по столбцам
{
cout.width(9);//количество позиций под вывод
cout << AM[i][j] << "|";//вывод элемента матрицы
}
cout << endl;
}
}
void GenerateMatrix(int n, int **AM)
//генерация графа
{
int i, j;//счетчики циклов
int rnd;//случайное число
for (i = 0; i < n; i++)//цикл по строкам
for (j = 0; j < n; j++)//цикл по столбцам
{
if (i == j)//если элемент диагональный
continue;//переход к следующему
//определяем наличие ребра между i и j
//0 - нет
//1 - есть неориентированное
//2 - ориентированное от i к j
//3 - ориентированное от j к i
rnd = rand() % 4;//генерация случайного числа
switch (rnd)//обработка
{
case 1: AM[i][j] = 1; AM[j][i] = 1;break;//неориентированное
...