Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru