#include <iostream>
#include <conio.h>
#include <windows.h>
#include <iomanip>
using namespace std;
class DArray
{
int** a; //Указатель для создания двумерного массива
int x,y; // размеры массива
public:
// Функции доступа:
void Set_array(int**,int,int);
int** Get_array();
// Функции ввода-вывода:
void input();
void output();
};
// Определение функций:
/*Функция, которая размещает в памяти массив a и заполняет его данными из массива aa, передаваемого функции как параметр*/
void DArray::Set_array(int** aa, int xx, int yy)
{
x=xx; y=yy; //Копируем размеры массива aa
//Создаем в памяти структуру, которая работает как таблица:
a = new int* [x]; //Создаем массив указателей на строки
for (int i=0; i<x; i++)
a[i]=new int [y]; //выделяем место под строки таблицы
//Заполняем массив данными, копируя элементы из массива aa:
for (int i=0; i<x; i++)
for (int j=0; j<y; j++)
a[i][j]=aa[i][j];
}
// Функция, которая возвращает указатель на массив:
int** DArray::Get_array()
{
return a;
}
// Функция для ввода массива с клавиатуры:
void DArray::input()
{
cout << "Задайте количество строк матрицы ";
cin >> x;
cout << "Задайте количество столбцов матрицы ";
|
|
cin >> y;
//Размещение массива в памяти:
a = new int* [x];
for (int i=0; i<x; i++)
a[i]=new int [y];
// Ввод элементов массива:
for (int i=0; i<x; i++)
{
for (int j=0; j<y; j++)
{
cout << "Задайте элемент " << i << "-й строки и " << j <<"-го столбца:";
cin >> a[i][j];
}
cout << endl;
}
}
// Функция для вывода массива на экран:
void DArray::output()
{
for (int i=0; i<x; i++)
{
for (int j=0; j<y; j++)
{
cout << setw(4) << a[i][j];
}
cout << endl;
}
}
//Пример программы, использующей класс DArray:
int main()
{
//Настройки шрифтов и региональных стандартов:
if(SetConsoleCP(1251)==0)
cerr<<"Fialed to set codepage!"<<endl;
if(SetConsoleOutputCP(1251)==0
cerr<<"Failed to set OUTPUT page!"<<endl;
DArray A,B; // Объявление объектов
int** c; //Указатель на массив-источник
/* Создание массива с[2][2], элементы которого равны сумме номера строки и номера столбца */
c = new int* [2];
for (int i=0; i<2; i++)
c[i]=new int [2];
for (int i=0; i<2; i++)
for (int j=0; j<2; j++)
c[i][j]=i+j;
B.Set_array(c,2,2); /*Определяем объект B, копируя элементы из массива-источника */
B.output(); // Вывод массива B на экран
A.input(); // Ввод массива A c клавиатуры
A.output();// Вывод массива А на экран
_getch();
return 0;
}