Пример 3: Класс, описывающий двумерный массив. #include <iostream>

#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;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: