У вас вопросы?
У нас ответы:) SamZan.net

Контрольная работа Вариант по Студент

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 1.7.2025

Поволжский государственный университет телекоммуникаций и

Информатики

Заочный факультет

РЕГИСТРАЦИОННЫЙ № ______

Контрольная работа № _______               Вариант _______

по _____________________________________________________

Студент _________________________________________________

________________________________________________________

Факультет _________ курс ________ шифр __________ гр.______

Работа выслана «_____»_________________ 201__г.

Оценка _______________  Дата _______________201___г.

Подпись преподавателя ___________________

Самара 2013


Задание

Рассматривается   граф программы – дерево. Граф программы не задается, а строится в процессе выполнения этой работы по исходным данным, приведенным в индивидуальном задании.

После построения графа по нему необходимо определить число маршрутов - вариантов для отладки. Также необходимо построить зависимость значений структурного параметра  от числа узлов в графе Р.

В зависимости от варианта задания граф может быть построен как случайный, так и как детерминированный.

Правила построения графа ПО приводятся по вариантам ниже.

Вариант 5А

Число ребер выходящих из каждого узла постоянно детерминировано  и равно m-1(кроме висячих узлов, для которых это число равно 0). Значения m равно 4. Число ребер , входящих в каждый узел ,равно 1( кроме корневого). Число узлов в графе ПО N равно 150.

Правило остановки по достижению заданного числа узлов N построение графа завершается. В отчет по выполнению работы представляются:

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


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

//

//  main.cpp

//  RegularGraph

//

#include <iostream>

#include <vector>

#include <ctime>

#include <cstdlib>

#include <vector>

#include <cmath>

#include <fstream>

#include <clocale>

#include <conio.h>

// параметры для варианта 5A

const int m = 4;

const int N = 150;

// правило завершения - по достижению заданного числа узлов

static std::ofstream ver_f;

static std::ofstream vis_ver_f;

// функция для вычисления структурного параметра

double alpha(int B, int P)

{

   return static_cast<double>(P) / B;

}

///////////////////////// Функция построения дерева ////////////////////////////////

// элемент выходного массива

class name_t

{

public:

   // конструктор для класса по умолчанию

   name_t()

   {

       index = parent = 0;

   }

   // номер узла

   int index;

   // номер родительского узла

   int parent;

};

// в массиве a от родителя с индексом [i-1][uj] порождает mx потомков присваивая

// каждому порядковый номер count и занося их в массив a на строку i

bool input(name_t (&a)[300][300], int i, int& j, int& uj, int& count)

{

   for (int x = 0, end = m - 1; x < end; ++x, ++j)

   {

       if (count - 1 == N)

           return true;

       a[i][j].index = count++;

       a[i][j].parent = a[i-1][uj].index;

   }

   ++uj;

   return false;

}

void CreateTree(int &P, int &B)

{

   // массив вершин

   name_t ver[300][300];

   // массив висячих вершин

   std::vector<name_t> vis_ver;

   // высота текущего дерева

   P = 2u;

   // корень дерева имеет порядковый номер 1 и номер родителя 1

   ver[0][0].index = ver[0][0].parent = 1u;

   // дерево не выродилось

   bool tree_end = false;

   int i;

   for (i = 1u; i < 300; i++)

   {

       int uj = 0; // столбец верхней строки

       int j = 0; // столбец текущей строки

       // цикл до тех пор, пока все вершины текущего уровня не будут пройдены

       do

       {

           // заполнение вершин текущего уровня

           tree_end = input(ver, i, j, uj, P);

           // если дерево выродилось

           if (tree_end)

           {

               // все вершины остальные вершины предыдущего уровня остаются висячими

               while (ver[i - 1][uj].parent)

               {

                   vis_ver.push_back(ver[i - 1][uj]);

                   ++uj;

               }

               break;

           }

       } while (ver[i - 1][uj].parent != 0);

       // если вершин = N или дерево выродилось - прекращаем работу с текущим деревом

       if (tree_end)

       {

           // все вершины последнего уровня считаются висячими

           for (int x = 0; x < 300; ++x)

               if (ver[i][x].index != 0)

                   vis_ver.push_back(ver[i][x]);

           break;

       }

   }

   // выводим в файл массив вершин

   bool printed = true;

   for (int x = 0, end = i + 1; x < end && printed; x++)

   {

       printed = false;

       for (int y = 0; y < 300; y++)

           if (ver[x][y].parent != 0)

           {

               ver_f << ver[x][y].index << "-" << ver[x][y].parent << " ";

               printed = true;

           }

       ver_f << std::endl;

   }

   // выводим в файл массив висячих вершин

   for (int x = 0, end = static_cast<int>(vis_ver.size()); x < end; x++)

       vis_ver_f << vis_ver[x].index << "-" << vis_ver[x].parent << " ";

   // корректировка параметров

   --P;

   B = static_cast<int>(vis_ver.size());

}

// главная функция программы

int main(int argc, const char * argv[])

{

   // установка русского языка

   setlocale(LC_ALL, "Russian");

   // процесс рандомизации теперь зависит от времени

   srand(static_cast<int>(std::time(NULL)));

   // параметры

   int P, B;

   double alphaValue;

   // открытие выходных файлов

   ver_f.open("массив_вершин.txt", std::ios::trunc);

   vis_ver_f.open("массив_висячих_вершин.txt", std::ios::trunc);

   // построение графа, для которого будет выведена таблица вершин

   // таблица висячих вершин, а также гистограмма значения числа вершин

   CreateTree(P, B);

   // закрытие файлов

   ver_f.close();

   vis_ver_f.close();

   // вычисление структурного параметра

   alphaValue = alpha(B, P);

   std::cout << "P = " << P << std::endl;

   std::cout << "B = " << B << std::endl;

   std::cout << "alpha = " << alphaValue << std::endl;

_getch();

   return EXIT_SUCCESS;

}
Результаты выполнения программы

Рис. 1 – «Результат вычисления структурного параметра»

Результат построение графа, для которого выведена таблица вершин в файл «массив_вершин.txt»:

1-1

2-1 3-1 4-1

5-2 6-2 7-2 8-3 9-3 10-3 11-4 12-4 13-4

14-5 15-5 16-5 17-6 18-6 19-6 20-7 21-7 22-7 23-8 24-8 25-8 26-9 27-9 28-9 29-10 30-10 31-10 32-11 33-11 34-11 35-12 36-12 37-12 38-13 39-13 40-13

41-14 42-14 43-14 44-15 45-15 46-15 47-16 48-16 49-16 50-17 51-17 52-17 53-18 54-18 55-18 56-19 57-19 58-19 59-20 60-20 61-20 62-21 63-21 64-21 65-22 66-22 67-22 68-23 69-23 70-23 71-24 72-24 73-24 74-25 75-25 76-25 77-26 78-26 79-26 80-27 81-27 82-27 83-28 84-28 85-28 86-29 87-29 88-29 89-30 90-30 91-30 92-31 93-31 94-31 95-32 96-32 97-32 98-33 99-33 100-33 101-34 102-34 103-34 104-35 105-35 106-35 107-36 108-36 109-36 110-37 111-37 112-37 113-38 114-38 115-38 116-39 117-39 118-39 119-40 120-40 121-40

122-41 123-41 124-41 125-42 126-42 127-42 128-43 129-43 130-43 131-44 132-44 133-44 134-45 135-45 136-45 137-46 138-46 139-46 140-47 141-47 142-47 143-48 144-48 145-48 146-49 147-49 148-49 149-50 150-50

Результат построение графа, для которого выведена таблица висячих вершин в файл «массив_висячих_вершин.txt»:

50-17 51-17 52-17 53-18 54-18 55-18 56-19 57-19 58-19 59-20 60-20 61-20 62-21 63-21 64-21 65-22 66-22 67-22 68-23 69-23 70-23 71-24 72-24 73-24 74-25 75-25 76-25 77-26 78-26 79-26 80-27 81-27 82-27 83-28 84-28 85-28 86-29 87-29 88-29 89-30 90-30 91-30 92-31 93-31 94-31 95-32 96-32 97-32 98-33 99-33 100-33 101-34 102-34 103-34 104-35 105-35 106-35 107-36 108-36 109-36 110-37 111-37 112-37 113-38 114-38 115-38 116-39 117-39 118-39 119-40 120-40 121-40 122-41 123-41 124-41 125-42 126-42 127-42 128-43 129-43 130-43 131-44 132-44 133-44 134-45 135-45 136-45 137-46 138-46 139-46 140-47 141-47 142-47 143-48 144-48 145-48 146-49 147-49 148-49 149-50 150-50

 

Рис. 2 – «График изменения значений как функция изменения числа вершин Р»

Рис. 3 – «Графическое представление первых двадцати узлов графа»




1. Вредители рыб и методы борьбы с ними
2. то волшебных рек превратили воду этих рек в вино
3. Договоры страхования ответственности особенности взаимного страхования
4. Православное воспитание.html
5.  Выбор схемы очистных сооружений
6. реферат дисертації на здобуття наукового ступеня кандидата мистецтвознавства
7. полями битвы были не только военнотехническая экономическая и технологическая области
8. Статья- Анализ зависимости параметров литологического и химического состава каменноугольных отложений
9. Тема- Понятие коммерческого права его генезис и его положение
10. Young leders for Europe trining course ims to trin youth workers nd youth leders in fcilitting interntionl nd interculturl youth encounters