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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 05:23   #1
SolnBunny
Новичок
Джуниор
 
Регистрация: 02.12.2014
Сообщений: 1
По умолчанию Построить шаблон класса матрица произвольных элементов

Всем доброго вечера! Программу я написала, но использовать созданный шаблон класса для различных типов элементов не получается... Помогите пожалуйста найти ошибку. Буду очень благодарна.
Код:
#include <iostream.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <conio.h>
 
template<class T>
class matrix{
private:
    T **mas;     
    int n,m;
public:
    matrix(){}
    matrix_get_n() {return n;}
    matrix_get_m() {return m;}
    T** get() {return mas;}
    void set(T** mas1) {mas=mas1;}
    matrix(int n1, int m1);
    void out();
    matrix(const matrix<T> &a);
    ~matrix(); 
 
    matrix<T> operator +(matrix<T> &b); 
    matrix<T> operator -(matrix<T> &b); 
    matrix<T> operator *(matrix <T> &b); 
};
 
template<class T>
matrix<T>::matrix(int n1, int m1){
    n=n1;
    m=m1;
    mas = new T* [n];
    for (int i=0; i<n;i++){
    mas[i]=new T[m];
    } 
    for (int k=0; k<n; k++){
    for (int i=0; i<m;i++){
    mas[k][i] = random(10)-5;
    }
    } 
}
template<class T>
void matrix<T>::out()
{
    for (int k=0; k<n; k++){
    for (int i=0; i<m;i++){
    cout << setw (4)<< mas[k][i];
    }
    cout <<endl;
        }
    cout << endl;
}
template<class T>
matrix<T>::matrix(const matrix<T> &a)
{
    n=a.n;
    m=a.m;
    mas = new T* [n]; // Їгбв®© ¬*ббЁў
    for (int i=0; i<n;i++){
    mas[i]=new T[m];
    } 
    for (int k=0; k<n; k++){
    for (int i=0; i<m;i++){
    mas[k][i] = a.mas[k][i];
    }
    }
}
template<class T>
matrix<T>::~matrix(){
    for (int i=0; i<n; i++) delete[] mas[i];
    delete []mas;
}
 
template<class T>
matrix<T> matrix<T>::operator +(matrix<T> &b){
    matrix<T> c(n,m);
    for (int k=0; k<n; k++){
    for (int i=0; i<m;i++){
    c.mas[k][i] = b.mas[k][i]+mas[k][i] ;
    }
    }
return c;
}
 
template<class T>
matrix<T> matrix<T>::operator -(matrix<T> &b){
    matrix<T> c(n,m);
    for (int k=0; k< n; k++){
        for (int i=0; i<m;i++){
        c.mas[k][i] = mas[k][i]- b.mas[k][i];
    }
    }
return c;
}
 
 
template<class T>
matrix<T> matrix<T>::operator *(matrix<T> &b){
      matrix<T> c(n,m);
    for (int k=0; k< n; k++) {
        for (int i=0; i<m;i++)
       { c.mas[k][i]=0;
        for(int j=0; j<b.n; j++) {
        c.mas[k][i]+= (mas[k][j]*b.mas[j][i]);
          }}}
    return c;
    }
 
int main()
{ clrscr();
    matrix<int> a(2,2);
    cout<<"1. Вывод матрицы А:"<<endl;
    a.out();
    matrix<int> b(2,2);
    cout<<"2. Вывод матрицы B:"<<endl;
    b.out();
    cout<<"3. Сумма матриц  А и В:"<<endl;
    (a+b).out();
    cout<<"4. Разница матриц  А и В::"<<endl;
    (a-b).out();
    cout<<"5. Произведение матриц  А и В: ‚:"<<endl << endl;
    (a*b).out();
   getch();
   return 0;
}
SolnBunny вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шаблон класса.. YaDenis Помощь студентам 0 10.01.2013 02:11
Шаблон класса brewsters Общие вопросы C/C++ 3 15.07.2012 21:00
Шаблон класса дерева Last Общие вопросы C/C++ 1 22.05.2012 09:23
C++шаблон класса cati Помощь студентам 1 30.04.2010 00:24
Шаблон класса androidvsu Общие вопросы C/C++ 2 26.04.2009 11:57