Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2012, 17:01   #1
derlysh
Пользователь
 
Регистрация: 18.07.2011
Сообщений: 15
Вопрос Матрицы

Работу нужно выполнить в CodeBlocks.
Задача заключается в том, что нужно описать на С++ элементарные преобразования над матрицами:
-перемена местами двух строк и двух столбцов;
-умножение строки и столбца на число, отличное от нуля;
-добавление к какой-либо строке или столбцу другой строки или столбца, умноженных на произвольное число.
И с помощью выше описанных преобразований привести матрицу к верхнетреугольному виду.

Последний раз редактировалось derlysh; 19.03.2012 в 17:06.
derlysh вне форума Ответить с цитированием
Старый 19.03.2012, 17:07   #2
derlysh
Пользователь
 
Регистрация: 18.07.2011
Сообщений: 15
По умолчанию

Заранее всем огромное спасибо!

Последний раз редактировалось derlysh; 19.03.2012 в 17:26.
derlysh вне форума Ответить с цитированием
Старый 19.03.2012, 17:54   #3
~Himera~
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 11
По умолчанию

http://programmersforum.ru/showthread.php?t=34061

Давай хоть какой-то код, его поможем привести в порядок, но на халяву ничего не будет.
~Himera~ вне форума Ответить с цитированием
Старый 19.03.2012, 18:21   #4
derlysh
Пользователь
 
Регистрация: 18.07.2011
Сообщений: 15
По умолчанию

вот что у меня есть
Код:
#pragma once
#include <list>
#include <vector>
#include <iostream>
using std::vector;
using std::cout;
using std::istream;
using std::ostream;
class _matrix
{
private:
vector< vector<float> > vvf;
int stroka;
int stolbec;
public:
_matrix() {};
_matrix(int str, int stolb)
{
stroka = str;
stolbec = stolb;
vvf.resize(stroka, vector<float>(stolbec));
}
_matrix (const _matrix &obj)
{
stroka = obj.stroka;
stolbec = obj.stolbec;
vvf = obj.vvf;
}
~_matrix()
{
vvf.clear();
}
_matrix& operator+(_matrix &obj2)
{
_matrix* obj = new _matrix(*this);
for(int y = 0; y < obj2.stroka; y++)
for(int x = 0; x < obj2.stolbec; x++)
(*obj)(y, x) = (*this)(y, x) + obj2(y, x);
return *obj;
}
_matrix& operator-(_matrix &obj2)
{
_matrix* obj = new _matrix(*this);
for(int y = 0; y < obj2.stroka; y++)
for(int x = 0; x < obj2.stolbec; x++)
(*obj)(y, x) = (*this)(y, x) - obj2(y, x);
return *obj;
}
_matrix &operator*(_matrix &obj2)
{
_matrix* obj = new _matrix(*this);
for(int y = 0; y < obj->stroka; y++)
for(int x = 0; x < obj->stolbec; x++)
{
(*obj)(y, x) = 0;
for(int k = 0; k < obj->stroka; k++)
(*obj)(y, x) += obj2(k,x) * (*this)(y, k);
}
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 < stroka; y++)
for(int x = 0; x < stolbec; x++)
(*this)(y, x) = transobj(x, y);
return *this;
}
vector <float> multvec(int str, float value)
{
vector<float> temp(stroka);
for(int x = 0; x < stroka; x++)
{
temp[x] = value * vvf[str][x];
}
return temp;
}
void norm(int str, float value)
{
for(int x = 0; x < stroka; x++)
{
vvf[str][x] = vvf[str][x]/value;
}
}
void subvec(int str,vector<float> temp)
{
for(int x = 0; x < stroka; 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 < stroka; y++)
invobj(y,y) = 1;
for(int x = 0; x < stolbec; x++)
{
for(int y = 1; y < stroka; y++)
{
if(x < y)
{
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 << obj;
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 << obj;
cout << invobj;
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 < obj.stroka; y++)
{
for(int x = 0; x < obj.stolbec; x++)
{
stream << obj(y, x) << " ";
}
stream << "\n";
}
return stream;
}
istream &operator>>(istream &stream, _matrix &obj)
{
for(int y = 0; y < obj.stroka; y++)
for(int x = 0; x < obj.stolbec; x++)
stream >> obj(y, x);
return stream;
}

кроме это, соззданы три блокнота с именами file1.txt, file2.txt, file3.txt, нужны ещё функции(((((

????????????

Последний раз редактировалось Stilet; 19.03.2012 в 21:15.
derlysh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Язык СИ! Динамическое выделение памяти под массивы и матрицы, передача матрицы в функции Андрей! Общие вопросы C/C++ 33 31.01.2012 22:07
С++.три матрицы, упорядочить строки той матрицы у которой больше нулевых строк Ирина1992 Помощь студентам 12 20.11.2011 13:01
Процедуры - вычислить количество элементов матрицы,кратных 5 и заменить на 0 все четные элементы матрицы Ksenichka Помощь студентам 1 19.05.2011 14:38
Ф-ия, определяющая сумму строк матрицы, если на главной диагонали матрицы имеется отрицательный эл-т. Volk_xD Помощь студентам 6 05.01.2011 13:39
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19