Автор работы: Пользователь скрыл имя, 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 Структура класу
Висновок
Література
}
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.
2. Книга У. Форд, У. Топп В«Структура даних в С + + В»ТОВВ« Біном-Пресс В»2006р.
3. Беллман Р. Введення в теорію матриць. - М.: Мир, 1969.
4. Курош А.Г.Курс вищої алгебри: Підручник для вузів 15-е изд., стереотип. - М.: Лань, 2006. - 432 с.
5. Дж. Голуб, Ч. Ван Лоун Матричні обчислення. - М.: Мир, 1999.
6. Сайт В«Знайомимося з
7. Б. Страуструп. В«Мова програмування C + +. Спеціальне видання. В», 2004 р.
Информация о работе Створення,реалызацыя та використання классу представлення матриць