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));
}
}
}