Stitchi16
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору // Array2.h #include <iostream> using namespace std; class Array2 { private: int rows; int columns; int **mas; public: // конструкторы и деструкторы // конструктор с двумя параметрами Array2(int n, int m) { rows = n; columns = m; mas = new int * [rows]; // память под массив указателей на строки for(int i = 0; i < rows; i++) mas[i] = new int[columns]; // на каждый указатель выделяем память под столбцы } // деструктор ~Array2() { for(int i = 0; i < rows; i++) // очищаем память под столбцы delete [] mas[i]; // очищаем память под строки delete [] mas; } //методы: friend istream &operator >> (istream &in, Array2 &m); friend ostream &operator << (ostream &out, const Array2 &m); Array2 &operator + (Array2 &m2); Array2 &operator - (Array2 &m2); Array2 &operator * (Array2 &m2); //int &Array2 operator [] (int i); }; // Array2.cpp #include "Array2.h" #include <iostream> using namespace std; // ввод istream &operator >> (istream &in, Array2 &m) { for (int i = 0; i < m.rows; i++) { for (int j = 0; j < m.columns; j++) { cout << "Enter " << "[" << i << "]" << "[" << j << "]" << " elemet: "; in >> m.mas[i][j]; } cout << "\n"; } return in; } // вывод ostream &operator << (ostream &out, const Array2 &m) { for (int i = 0; i < m.rows; i++) { for (int j = 0; j < m.columns; j++) out << m.mas[i][j] << "\t"; out << "\n"; } return out; } // сложение Array2 &Array2::operator + (Array2 &m2) { if ((rows == m2.rows) && (columns == m2.columns)) { Array2 *pta; int s; pta = new Array2(rows, m2.columns); for (int i = 0; i < rows; i++) { for(int j = 0; j < m2.columns; j++) { s = 0; s += mas[i][j] + m2.mas[i][j]; pta->mas[i][j] = s; } } return *pta; } else cout << "Error\n"; } // вычитание Array2 &Array2::operator - (Array2 &m2) { if ((rows == m2.rows) && (columns == m2.columns)) { Array2 *pta; int s; pta = new Array2(rows, m2.columns); for (int i = 0; i < rows; i++) { for(int j = 0; j < m2.columns; j++) { s = 0; s += mas[i][j] - m2.mas[i][j]; pta->mas[i][j] = s; } } return *pta; } else cout << "Error\n"; } // умножение Array2 &Array2::operator * (Array2 &m2) { if (columns == m2.rows) { Array2 *pta; int s; pta = new Array2(rows, m2.columns); for (int i = 0; i < rows; i++) { for(int j = 0; j < m2.columns; j++) { s = 0; for(int k = 0; k < columns;k++) s += mas[i][k] * m2.mas[k][j]; pta->mas[i][j] = s; } } return *pta; } else cout << "Error\n"; } #include "Array2.h" #include <iostream> using std::cin; using std::cout; int main() { cout << "The fist array:\n"; int n1, m1; cout << "Enter rows: "; cin >> n1; cout << "Enter columns: "; cin >> m1; cout << "\n"; Array2 a(n1, m1); cin >> a; cout << a; cout << "\n"; cout << "The second array:\n"; int n2, m2; n2 = m1; cout << "Enter columns: "; cin >> m2; cout << "\n"; Array2 b(n2, m2); cin >> b; cout << b; cout << "\n"; cout << "The third array:\n"; cout << "Rows: " << n1 << "\n"; cout << "Columns: " << m1 << "\n"; cout << "\na1 + a2:\n"; Array2 c(n1, m1); c = a + b; cout << c; cout << "\na1 - a2:\n"; c = a - b; cout << c; cout << "\n"; cout << "The four array:\n"; cout << "Rows: " << n2 << "\n"; cout << "Columns: " << m1 << "\n"; cout << "\na1 * a2:\n"; Array2 d(n2, m1); d = a * b; cout << d; return 0; } | Всего записей: 37 | Зарегистр. 08-03-2007 | Отправлено: 18:42 15-11-2008 | Исправлено: Stitchi16, 19:06 15-11-2008 |
|