Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Контрольная работа по "Программированию"

Автор:   •  Март 21, 2019  •  Контрольная работа  •  2,138 Слов (9 Страниц)  •  410 Просмотры

Страница 1 из 9


Содержание

1 Задание        3

2 Блок-схемы алгоритмов        4

3 Листинг программы        6

4 Результат выполнения        9

Список литературы        10


  1. Задание

Разработать программу реализующую генерирование графа дружеских отношений и вывод его на экран, считывание данных для построения графа производить из файла.

Представление графа: матрица смежности, граф смешанный.

Реализовать функцию, находящую ответ на вопрос:

«Если я твой друг, то ты мой друг?»


  1. Блок-схемы алгоритмов[pic 1]

GenerateMatrix(n, AM)

Конец

  1. Блок - схема функции генерации графа

[pic 2]

isFriends(n, AM, index)

Конец

  1. Блок - схема функции, находящей ответ на вопрос: «Если я твой друг, то ты мой друг?»

  1. Листинг программы

#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;//неориентированное

...

Скачать:   txt (8.8 Kb)   pdf (356.9 Kb)   docx (32.1 Kb)  
Продолжить читать еще 8 страниц(ы) »
Доступно только на Essays.club