Показать сообщение отдельно
Старый 17.02.2006, 17:56   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
1)преобразование типов:
float a;
int x=int(a);
//или просто int x=a;
;
и по аналогии.
2) матрицы перемножать последователно в строгом порядке: 1 на 2, результат 12 на 3 и т.д.
примерно так
//created by impersonalis 
//b00lean team (http://community.boolean.name/)

//библиотека матриц


template <class abstr>
class matrix{
private:
	unsigned StringSize;
	unsigned CSize;
	abstr *buffer;
public:
	matrix<abstr> (unsigned size,unsigned size2=0);//стандартный конструктор
	matrix<abstr> (unsigned NS,unsigned NC,const matrix &M);//минор (0,0,X - полностью копирует матрицу Х в создаваемую)
	matrix<abstr> (char filename[]);//загрузка из файла
	matrix<abstr> ();//дефолтный конструктор
	~matrix();//деструктор
	void in(unsigned SNumber,unsigned CNumber,abstr Z);//ввод
	abstr out(unsigned SNumber,unsigned CNumber)const;//вывод
	abstr determinant()const;//определитель
	abstr Ajk(unsigned NS,unsigned NC)const;//(-1)^(j+k)*|Minor|
	void transp(const matrix &M);//транспонирование
	bool invert(const matrix &M);//инвертирование
	abstr IstrJcol(const matrix &M,unsigned I,unsigned J)const;//перемножение строка*столбец
	void operator*(abstr Z);//умножение на коэффициент
	void MNOG(const matrix &M1,const matrix &M2);//пермножение матриц

	friend ostream & operator <<(ostream &out,const matrix &M);//вывод матрицы в поток в формате HTML-4 как таблицы
	void ShowMessage();//генерация виндозной форточки с матрицей
};

template <class abstr>
matrix<abstr>::matrix(unsigned size,unsigned size2){
	StringSize=size;
	CSize=size2;
	if (CSize==0){CSize=StringSize;}
	unsigned index=(CSize-1)*StringSize+StringSize;
	buffer=new abstr[index];
}

template <class abstr>
abstr matrix<abstr>::IstrJcol(const matrix &M,unsigned I,unsigned J)const{
	abstr z=0;
	for(unsigned k=1;k<=StringSize;k++){
 abstr az=out(I,k);
 abstr bz=M.out(k,J);
 z=z+az*bz;
	}
	return z;
}

template <class abstr>
void matrix<abstr>::MNOG(const matrix &M1,const matrix &M2){
	//самодомножение a=a*b
	if(&M1==this){
 
 matrix <abstr>E(0,0,M1);
 MNOG(E,M2);
 return;
	}
	//самодомножение a=c*a
	if(&M2==this){
 
 matrix <abstr>E(0,0,M2);
 MNOG(M1,E);
 return;
	}

	if(StringSize+CSize!=0){
 delete []buffer;
	}
//	
	StringSize=M2.StringSize;
	CSize=M1.CSize;
	unsigned index=(CSize-1)*StringSize+StringSize;
	buffer=new abstr[index];
//
	for(unsigned i=1;i<=M1.CSize;i++){
 for(unsigned j=1;j<=M2.StringSize;j++){
 	in(i,j,M1.IstrJcol(M2,i,j));
 }
	}
}
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием