Створення,реалызацыя та використання классу представлення матриць

Автор работы: Пользователь скрыл имя, 11 Декабря 2013 в 18:22, курсовая работа

Краткое описание

На сьогоднішній день математичне програмування - важлива складова всього програмування. Великі і складні обчислення завдяки простим програмам стають простими.
В даній курсовій роботі створювалася програма для обчислень над матрицями.
В якості середовища програмування обрана MS Visual Studio 2008 і мова програмування C + +.

Содержание

Вступ
1. Теоретична частина
1.1 Опис програми, матриці
1.2 C + +
1.3 Microsoft Visual Studio Express
1.4 Стандартна бібліотека шаблонів (STL)
1.5 Vector
1.6 Перевантаження операторів
2. Проектування та етапи розробки
2.1 Постановка завдання
2.2 Засоби розробки
2.3 Опис процесу компіляції і запуску програми
3. Реалізація
3.1 Структура програми
3.2 Структура класу
Висновок
Література

Прикрепленные файлы: 1 файл

Курсова робота.docx

— 33.32 Кб (Скачать документ)

}

return * obj;

}

_matrix & operator = (const _matrix & obj)

{

stroka = obj.stroka;

stolbec = obj.stolbec;

vvf = obj.vvf;

return * this;

}

float & operator () (int & i, int & j)

{

return vvf [i] [j];

}

_matrix & transpon ()

{

_matrix transobj (* this);

for (int y = 0; y

for (int x = 0; x

(* this) (y, x) = transobj (x, y);

return * this;

}

vector multvec (int str, float value)

{

vector temp (stroka);

for (int x = 0; x

{

temp [x] = value * vvf [str] [x];

}

return temp;

}

void norm (int str, float value)

{

for (int x = 0; x

{

vvf [str] [x] = vvf [str] [x]/value;

}

}

void subvec (int str, vector temp)

{

for (int x = 0; x

{

vvf [str] [x] = vvf [str] [x] - temp [x];

}

}

_matrix Inversion ()

{

_matrix obj (* this);

_matrix invobj (stroka, stolbec);

float f;

for (int y = 0; y

invobj (y, y) = 1;

for (int x = 0; x

{

for (int y = 1; y

{

if (x

{

f = obj (y, x)/obj (x, x);

obj.subvec (y, obj.multvec (x, f));

invobj.subvec (y, invobj.multvec (x, f));

}

}

}

for (int x = stolbec-1; x> -1; x -)

{

for (int y = stroka-1; y> -1; y -)

{

f = obj (x, x);

obj.norm (x, f) ;//cout <

invobj.norm (x, f);

if (x> y)

{

f = obj (y, x)/obj (x, x);

obj.subvec (y, obj.multvec (x, f));

invobj.subvec (y, invobj.multvec (x, f));

}

}

}

cout <

cout <

return invobj;

}

friend ostream & operator <<(ostream & Stream, _matrix & obj);

friend istream & operator>> (istream & Stream, _matrix & obj);

};

ostream & operator <<(ostream & stream, _matrix & obj)

{

for (int y = 0; y

{

for (int x = 0; x

{

stream <

}

stream <<" n";

}

return stream;

}

istream & operator>> (istream & stream, _matrix & obj)

{

for (int y = 0; y

for (int x = 0; x

stream>> obj (y, x);

return stream;

}

1. main.cpp

# include

# include

# include

# include "matrix.h"

using std :: cout;

using std :: ofstream;

using std :: ifstream;

using std :: cin;

using std :: endl;

int primer1 (_matrix &, _matrix &);

int primer2 (_matrix &);

int primer1 (_matrix & _objA, _matrix & _objB)

{

ofstream fout1;

_matrix _objC;

fout1.open ("file3.txt");

if (! fout1)

{

cout <<"Error with open output file" <

exit (1);

}

_objC = _objA + _objB;

fout1 <<"Сума: n";

fout1 <<_objC;

_objC = _objA - _objB;

fout1 <<"Різниця: n";

fout1 <<_objC;

_objC = _objA * _objB;

fout1 <<"Твір: n";

fout1 <<_objC;

return 0;

}

int primer2 (_matrix & _objA)

{

ofstream fout1;

fout1.open ("file3.txt");

_matrix _objC;

if (! fout1)

{

cout <<"nevozmojno open file3" <

exit (1);

}

_objC = _objA.Inversion ();

fout1 <<"matrix Inversion n";

fout1 <<_objC;

_objC = _objA * _objC;

fout1 <<"matrix * matrix.Inversion = N ";

fout1.precision (3);

fout1 <<"% f" <<_objC;

return 0;

}

bool freadMatrix (_matrix & mtr, char * fileName)

{

ifstream fin;

fin.open (fileName);

if (! fin) return false;

fin>> mtr;

fin.close ();

return true;

}

int menu ()

{

int primer;

_matrix objA (5, 5);

_matrix objB (5, 5);

// читання файлів

if (! freadMatrix (objA, "file1.txt") | | ! FreadMatrix (objB, "file2.txt"))

{

cout <<"Error with open input file" <

return 1;

}

cout <<"select action n 1. + - * Matrix N 2. seatch Inversion matrix "<

cin>> primer;

switch (primer)

{

case (1):

primer1 (objA, objB);

break;

case (2):

 

primer2 (objA);

break;

}

cout <<"ok";

return 0;

}

int main (int argc, char ** argv)

{

menu ();

_getch ();

return 0;

}

 

 

 

 

 

 

 

 

 

 

3.1 Структура програми

Програма містить компоненти, що відповідають за:

1) інтерфейс,

2) математичну логіку,

3) взаємодія об'єктів класу,

4) перевантаження операторів.

3.2 Структура класу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Висновок

В ході виконання курсової роботи була отримана працездатна програма, задовольняє початковому завданню.

В ході розробки були проаналізовані та використані наступні технології:

1) Stl;

2) потоків даних;

3) перевантаження операторів;

В Як подальшого вдосконалення програми представляється можливим збільшення функціональності класу і інтерфейсу (з метою збільшення інформативності).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Література

 

1. Вільна енциклопедія ua.wikipedia.org/

2. Книга У. Форд, У. Топп В«Структура  даних в С + + В»ТОВВ« Біном-Пресс  В»2006р.

3. Беллман Р. Введення в теорію  матриць. - М.: Мир, 1969.

4. Курош А.Г.Курс вищої алгебри:  Підручник для вузів 15-е изд., стереотип. - М.: Лань, 2006. - 432 с.

5. Дж. Голуб, Ч. Ван Лоун Матричні  обчислення. - М.: Мир, 1999.

6. Сайт В«Знайомимося з векторомВ». .cyberguru.ru/

7. Б. Страуструп. В«Мова програмування  C + +. Спеціальне видання. В», 2004 р.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Информация о работе Створення,реалызацыя та використання классу представлення матриць