Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
02.05.2014
Размер:
134.14 Кб
Скачать

Министерство образования Российской Федерации

Уфимский Государственный Авиационный Технический Университет

Кафедра ТК

Отчет по лабораторной работе №4

Изучение вопросов синтеза надежной конфигурации систем распределенной обработки данных

Выполнил: студент группы

Т28-420 ФИРТ

Проверил: Рыжов Г.И.

Уфа - 2005

1 Цель работы

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

2 Задание

1. Представить графы систем распределенной обработки данных при вертикальном (тип распределения - "дерево") и горизонтальном (тип распределения - "шина", "кольцо", "сеть") распределении компонент систем.

2. Представить матрицы смежности графов.

3. Представить алгоритмы вычисления вероятностей отказа систем распределенной обработки данных при вертикальном (тип распределения - "дерево") и горизонтальном (тип распределения - "шина", "кольцо", "сеть") распределении компонент систем.

4. Написать программу вычисления вероятностей отказа систем распределенной обработки данных.

5. Вычислить вероятности отказа систем распределенной обработки данных.

3 Выполнение работы

  1. Системы распределенной обработки данных и матрицы смежности графов

Схема системы

Матрица смежности

qij

1

2

3

4

1

0

q

q

0

2

q

0

0

0

3

q

0

0

q

4

0

0

q

0

qij

1

2

3

4

1

0

q

q

q

2

q

0

q

q

3

q

q

0

q

4

q

q

q

0

qij

1

2

3

4

1

0

q

0

q

2

q

0

q

0

3

0

q

0

q

4

q

0

q

0

qij

1

2

3

4

5

1

0

q

0

0

0

2

q

0

q

0

q

3

0

q

0

q

0

4

0

0

q

0

q

5

0

q

0

q

0

4 Исходный текст программы

Lab4.cpp

#include <vcl.h>

#pragma hdrstop

USEFORM("Main.cpp", frmMain);

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TfrmMain), &frmMain);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

Main.cpp

#include <vcl.h>

#pragma hdrstop

#include "Main.h"

#include <stdio.h>

#include <conio.h>

#pragma package(smart_init)

#pragma resource "*.dfm"

double **qk(int n, int k, double **q)

{

double **qk = new double*[n+1];

for (int i=1; i <= n; i++)

{

qk[i] = new double[n+1];

for (int j=1; j <= n; j++)

{

if (i < j)

{

if (i==k-1) qk[i][j] = q[1][j+1] * q[k][j+1];

else qk[i][j] = q[i+1][j+1];

}

else qk[i][j] = 0.0;

}

}

return qk;

}

double p(int n, double** q)

{

if (n==2) return 1.0 - q[1][n];

else

{

double sum = 0.0;

for (int k = 2; k <= n; k++)

{

double prod = 1.0;

for (int i = 2; i <= k-1; i++)

prod *= q[1][i];

sum += (1.0-q[1][k]) * prod * p(n-1, qk(n-1, k, q));

}

return sum;

}

}

TfrmMain *frmMain;

__fastcall TfrmMain::TfrmMain(TComponent* Owner)

: TForm(Owner)

{

mmInput->Lines->LoadFromFile("input.txt");

FILE *input_file = fopen("input.txt", "r");

double val = 1.0;

fscanf(input_file, "%lf", &val);

int n = 0;

double **q = 0;

int sample = 1;

while (fscanf(input_file, "%d", &n)!=EOF)

{

q = new double*[n+1];

for (int i=1; i<=n; i++)

{

q[i] = new double[n+1];

for (int j=1; j<=n; j++)

{

double tmp = 0.0;

fscanf(input_file, "%lf", &tmp);

q[i][j] = tmp * val;

}

}

mmResult->Lines->Add("P(q)="+FloatToStr(p(n,q)));

for (int i=1; i<=n; i++) {

delete[] q[i];

}

delete[] q;

sample++;

}

}

void __fastcall TfrmMain::btnCloseClick(TObject *Sender)

{

Close();

}

5 Пример работы программы

6