
Лабораторная работа №4 / Отчет
.docМинистерство образования Российской Федерации
Уфимский Государственный Авиационный Технический Университет
Кафедра ТК
Отчет по лабораторной работе №4
Изучение вопросов синтеза надежной конфигурации систем распределенной обработки данных
Выполнил: студент группы
Т28-420 ФИРТ
Проверил: Рыжов Г.И.
Уфа - 2005
1 Цель работы
Целью работы является изучение вопросов синтеза надежной конфигурации систем распределенной обработки данных.
2 Задание
1. Представить графы систем распределенной обработки данных при вертикальном (тип распределения - "дерево") и горизонтальном (тип распределения - "шина", "кольцо", "сеть") распределении компонент систем.
2. Представить матрицы смежности графов.
3. Представить алгоритмы вычисления вероятностей отказа систем распределенной обработки данных при вертикальном (тип распределения - "дерево") и горизонтальном (тип распределения - "шина", "кольцо", "сеть") распределении компонент систем.
4. Написать программу вычисления вероятностей отказа систем распределенной обработки данных.
5. Вычислить вероятности отказа систем распределенной обработки данных.
3 Выполнение работы
-
Системы распределенной обработки данных и матрицы смежности графов
Схема системы |
Матрица смежности |
||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
|
|
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 Пример работы программы