Цель работы: Разработать класс вектор (одномерный динамический массив). Методы класса: конструкторы, деструктор и несколько методов выполняющих преобразование в массиве (например, нахождения max значения и сортировки).
Вариант задания №1
Создать класс матрица (data). Данный класс содержит указатель на int, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию печати. Определить функцию сложения и вычитания (матрицы с матрицей), умножение матрицы на матрицу. Определить умножение матрицы на число. Проверить работу этого класса. В случае нехватки памяти, несоответствия размерностей, выхода за пределы устанавливать ошибки.
class data{ private: int n; int m; int **mtr; bool eror; public: data(); //конструктор без параметров data (int nn, int mm); //конструктор c 2-мя параметрами data(const data & ob); //конструктор копирования int summa(data t); //функция сложения двух матриц void vvod(int,int); //функция ввода матрицы int vivod(); //функция вывода матрицы void proizvedenie(int); //функция произведения матрицы на число void proizvedeniemtr(data t); //функция произведения двух матриц ~data(); //деструктор int shou(); };
data::data(){ eror=false; n=-1; mtr=NULL; }
data::data(const data & ob){ n=ob.n; m=ob.m; mtr= new int*[n]; for (int i=0; i<n; i++) mtr[i]=new int [n]; for (int i=0; i<m; i++) for (int j=0; j<n; j++) mtr[i][j]=ob.mtr[i][j];
}
data::data (int nn, int mm){ n=nn; m=mm; //присвоение внутренним переменным переданные параметры mtr= new int*[n]; //память под массив указателей if(mtr==NULL){ printf("В памяти данные отсутствуют!!!"); return; } for (int i=0; i<n; i++){ mtr[i]=new int[m]; //память для строки if(mtr==NULL ){ printf("В памяти данные отсутствуют!!!"); } for (int j=0;j<n; j++) mtr[i][j]=0; } }
int data::shou(){ if(mtr==NULL) return true; else return false; }
int data::summa(data t2){ if(t2.n==n&&t2.m==m){ for (int i=0;i<n;i++) for (int j=0;j<m;j++) mtr[i][j]=mtr[i][j]+t2.mtr[i][j]; } else{ eror=true; printf("Ошибка в несоотвествии размерности матрицы!!!\nПовторите операцию сначала!!!"); } return eror; }