Описание основных идентификаторов




Санкт-Петербургский государственный

Политехнический университет

Факультет Технической кибернетики

Кафедра «Системный анализ и управление»

 

Расчётное задание

по дисциплине "Системный анализ и управление в информатике"

на тему: " Моделирование метрического пространства"

 

выполнила: студентка группы 1082/3

Тамбаум Марина Андреевна

проверил: доцент кафедры САиУ

Болотин Игорь Васильевич

 

Санкт-Петербург

Содержание:

Постановка задачи ………………………………………………………………3

Теоретическая часть……………………………………………………………..4

Объект исследования и блок-схемы программы………………………………5

Описание основных идентификаторов………………………………………. 12

Код программы…………………………………………………………………..13

Выводы…………………………………………………………………………...17

 

 

1. Постановка задачи планирования производства в общем случае.

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

Множество, над которым было проведено исследование: {2 43 65 7 891 4 3 6 9}

Исследуемое множество вводиться пользователем с клавиатуры в текстовый файл, а программа последовательно проверяет все необходимые условия принадлежности множества к метрическому. В работе используются элементы x,y, функционал - | x – y |.

 

 

Теоретическая часть

В теории метрических пространств развивается геометрический язык, на котором выражаются результаты анализа. Этот язык позволяет придать этим результатам достаточную общность и вместе с тем дать наиболее простые и отражающие суть дела доказательства. Нас будут интересовать топологические аспекты теории метрических пространств, связанные с концепцией предельного перехода, а также алгебраические аспекты при изучении основных операций над элементами метрических пространств. Метрические пространства являются частным видом более общих топологических пространств.

Пусть Е - некоторое множество. Расстояние в Е есть отображение (функционал) d произведения E×E во множество действительных чисел R:

Предполагается, что функционал d обладает следующими свойствами:

1. Для любых (x,y) ;

2. ;

3. Для любых x,y ;

4. Для любых x,y,z .

Свойство 4 называется неравенством треугольника.

Множество Е с заданным в нем расстоянием d называется метрическим пространством. Обычно это пространство, т.е. пару (Е, d) обозначают одной буквой E.

 

Объект исследования и схемы программы

Объект исследования

Исходным множеством будем считать {2 43 65 7 891 4 3 6 9}

Схема программы

Функция 1.

Функция 2

Функция 3

Функция 4

Функция input

 

Функция output

Функция main

Описание основных идентификаторов

1. Идентификатор void func1(int *, int, int&) – функция, в которую подаются три параметра: первый - указатель на массив, второй – размерность массива, третий – адрес bool переменной С_1, которая отвечает за последующую запись в файл. В этой функции производится проверка условия

 

2. Идентификатор void func2 (int *, int, int&) – функция, в которую передаются три параметра: первый – указатель на массив, второй – размерность массива, третий – адрес bool переменной С_2, которая отвечает за последующую запись в файл. В этой функции производиться проверка условия

 

3. Идентификатор void func3 (int *, int, int&) – функция, в которую передаются три параметра: первый – указатель на массив, второй – размерность массива, третий – адрес bool переменной С_3, которая отвечает за последующую запись в файл. В этой функции производиться проверка условия

4.Идентификаторvoid func4 (int *, int, int&) - функция, в которую передаются три параметра: первый – указатель на массив, второй – размерность массива, третий – адрес bool переменной С_4, которая отвечает за последующую запись в файл. В этой функции производиться проверка условия

5. Идентификатор void input(int *, int) – функция, в которую передаются два параметра: первый – указатель на массив, второй – размерность массива. Эта функция производит считывание из текстового файла

 

6. Идентификатор void output(int *, int&,int&,int&,int&) – функция, в которую передаются 5 параметров: первый – указатель на массив, остальные 4 - адреса bool переменной С_. Функция производить запись в файл.

 


Код программы

//заголовочный файл

#pragma once // единождое подключение заголовочкого файла

 

#include <stdio.h>

#include <iostream>

#include <fstream>

using namespace std;

 

void func1(int *, int, int&); //объявление первой функции, проверяющей первое условие

void func2(int *, int, int&); //объявление второй функции, проверяющей второе условие

void func3(int *, int, int&); //объявление третьей функции, проверяющей третье условие

void func4(int *, int, int&); //объявление четвертой функции, проверяющей четвертое условие

void input(int *, int);//объявление функции, считывающей множество из файла

void output(int *, int&,int&,int&,int&); //объявление функции, записывающей результут в текстовый файл

 

// файл func1.cpp, в котором проиводиться проверка первого условия

#include "header_file.h" //подключение заголовочного файла

//функция, выполняющая проверку первого условия на то, что для любой пары (х,у) d(x,y)>=0

void func1(int *A, int N, int &C_1)

{

int i,j; //объявление переменных, необходимых для цикла

for (i=0; i<N; i++) //циклы для просмотра всех элементов

{ //из текстового

for (j=i+1; j<N; j++)//файла

{

if (abs(A[j]-A[i])>=0) //проверка условия, что для любой пары (х,у) условие d(x,y)>=0

{

C_1=1;//если данное условие выполняется, поднимаем флаг, значит условие = истина

}

else //либо

{

C_1=0;//опускаем=ложь

exit;

}

}

 

}

}

// файл func2.cpp, в котором проиводиться проверка второго условия

 

#include "header_file.h"//подключение заголовочного файла

//функция для проверки третьего условия на то, что d(x,y)=0 <=> x=y

void func2(int *A, int N, int &C_2)

{

int i,j;//объявление переменных, необходимых для цикла

for (j=0; j<N; j++)//циклы для просмотра всех элементов

{ //считываемых из

for (i=0; i<N; i++)//текстового файла

{

 

if (abs(A[j]-A[i])==0) //проверки

{ //условия на то, что

if (A[i]==A[j]) //d(x,y)=0 <=> x=y

{

C_2=1;//если выполнено, поднимаем флаг, условие=истина

}

else//либо опускаем, условие=ложь

{

C_2=0;

exit;

}

}

}

}

}

// файл func3.cpp, в котором производиться проверка третьего условия

 

#include "header_file.h"//подключение заголовочного файла

//функция для проверки третьего условия на то, что d(x,y)=d(y,x) для любых x,y

void func3(int *A, int N, int &C_3)

{

int i=0,j=0;//объявление переменных и присваивание им значения, для входа в циклы

for (j=0; j<N; j++)//циклы для просмотра всех элементов

{ //считываемых из текстового файла

for (i=0; i<N; i++)

{

if (abs(A[j]-A[i])==abs(A[i]-A[j])) //условие для проверки d(x,y)=d(y,x)

{

C_3=1;//если выполнено, поднимаем флаг, условие=истина

}

else//либо опускаем

{

C_3=0;//условие=ложь

exit;

}

}

}

}

// файл func4.cpp, в котором производиться проверка четвертого условия

 

#include "header_file.h"//подключение заголовочного файла

//функция для проверки условия на то, что d(x,z)<=d(x,y)+d(y,z) для любых x,y,z:

void func4(int *A, int N, int &C_1)

{

int i=0,j=0,z=0;//объявление переменных и присваивание им значения для входа в циклы

for (z=0; z<N; z++)//циклы для

{ //просмотра

for (j=0; j<N; j++)//всех

{ //элементов

for (i=0; i<N; i++)//считываемых из текстового файла

{

 

if (abs(A[z]-A[i])<=abs(A[i]-A[j])+abs(A[j]-A[z])) // проверка условия, что d(x,z)<=d(x,y)+d(y,z)

{

C_1=1;//если выполнено, поднимаем флаг, условие=истина

}

else

{

C_1=0;//либо опускаем, условие = ложь

exit;

}

}

}

}

}

#include "header_file.h";//подключение заголовочного файла

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

void input(int *text, int mn)

{

int i=0;//объявление переменной и присваивание ей значения

ifstream file ("space.txt"); //открытие файла для считывания массива

if (!file) //если файл невозможно найти, выход из программы

{

exit;

}

while(!file.eof())//считывание файла и запись его в массив

{

file>>text[i];

i++;//переход к последующему элементу

}

file.close();//закрытие файла

}

//функция, которая записывает в файл ответ

void output(int *text, int& C_1, int& C_2, int& C_3, int& C_4)

{

ofstream file("report.txt", ios::app);//открытие файла для записи отчета

if(file.is_open())//если необходимый файл есть

{

 

file <<"данное множество:"<<endl;

for (int i=0; i<10;i++)//цикл для записи элементов из файл

{

file<<text[i]<<" ";//запись множества

}

file<<" "<<endl;//перевод строки

if ((C_1==1)&&(C_2==1)&&(C_3==1)&&(C_4==1))//условие на то, что все проверки=истина

{

file<<"Это множество метрическое, так как:"<<endl;

file<<"1) d(x,y)>=0"<<endl;

file<<"2) If d(x,y)=0, x=y"<<endl;

file<<"3) d(x,y)=d(y,x)"<<endl;

file<<"4) d(x,z)<=d(x,y)+d(y,z)"<<endl;

}

else //если условия не выполнились, то выводим следующее

{

file<<"Множество не метрическое, так как:"<<endl;

if (C_1!=1)//если первое условие - ложь, то выводим

{

file<<"d(x,y)>=0"<<endl;//уточнение причин того, что множество не метрическое

}

if (C_2!=1)//если не выполнилось второе условие

{

file<<"d(x,y)>=0"<<endl;//уточнение причин того, что множество не метрическое

}

if (C_3!=1)//если не выполнилось третье условие

{

file<<"d(x,y)>=0"<<endl;//уточнение причин того, что множество не метрическое

}

if (C_4!=1)//если не выполнилось четвертое условие

{

file<<"d(x,y)>=0"<<endl;//уточнение причин того, что множество не метрическое

}

}

 

}

else cout<<"Файл не может быть открыт!"; //если файл не найден

}

//основная функция

#include "header_file.h"//подключение заголовочного файла

int main()

{

setlocale(LC_ALL,"rus");//подключение русскоязычной клавиатуры

int mn=10,i=0;

int C_1=0, C_2=0, C_3=0, C_4=0;

int *text=new int[mn];

input(text,mn);

for (i=0; i<mn;i++)//цикл для вывода каждого элемента

{

printf("%i ",text[i]);//вывод массива

}

input(text, mn);//чтение исходного множества из файла

func1(text, 10, C_1);//условие, выполняющие

func2(text, 10, C_2);//проверку на то,

func3(text, 10, C_3);//что множество является

func4(text, 10, C_4);//метрическим

output(text, C_1, C_2, C_3, C_4);//запись в файл полного отчета по проверкам

printf("\n");//переход к следующей строке

cout<< "Данные о проверках на принадлежность множества к метрическому пространству\nнаходятся в файле report.txt";

 

printf("\n");//переход к следующей строке и завершение работы консоли

return 0;

}




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: