Форум программистов, компьютерный форум CyberForum.ru

Построить описание класса - C++

Восстановить пароль Регистрация
 
dasisasha
0 / 0 / 0
Регистрация: 19.03.2014
Сообщений: 12
26.04.2014, 18:30     Построить описание класса #1
Всем доброго времени суток!
Нужна помощь, переделать программу, необходимо сделать ручной ввод(меню).
Задание звучит так: "Построить описание класса обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществлять проверку всех методов класса."
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include "stdafx.h"
#include<iostream>
using namespace std;
class Matrix // целочисленная матрица
{
private:
int **a; // для хранения информации
int w,h;// кол-во строк и столбцов
public:
Matrix(int H,int W); // конструктор с параметрами
Matrix(); // пустой конструктор
~Matrix();// деструктор
void SetXY(int Y,int X,int data); // для заполнения ячейки строки y и столбца x
int GetXY(int Y,int X); // возвращает значение элемента строки y и столбца x
void Show(); // вывод всей матрицы
void Show(int Hbeg,int Wbeg,int Hend, int Wend);// вывод начиная со строки HBeg и заканчивая Hend, и столбца с WBeg до Wend
void SetH(int H); // установка кол-ва строк
void SetW(int W);// установка кол-ва столбцов
int GetH() {return h;}
int GetW() {return w;}
};
Matrix::Matrix()
{
h=w=0;
}
Matrix::Matrix(int H,int W)
{
h=H;
w=W;
a=new int*[H];// выделение памяти под строки
for(int i=0;i<H;i++)
a[i]=new int[W];// выделение памяти под каждую строку
}
Matrix::~Matrix()
{
for(int i=0;i<h;i++)
delete [] a[i];
delete [] a;
}
void Matrix::SetXY(int Y,int X,int data)
{
if(Y<h &&Y>=0 && X<w && X>=0)
a[Y][X]=data;
}
int Matrix::GetXY(int Y,int X)
{
if (Y<h &&Y>=0 && X<w && X>=0)
return a[Y][X];
else
return -1;
}
void Matrix::Show()
{
for(int i=0;i<h; i++, cout<<endl)
for(int j=0;j<w;j++)
cout<<a[i][j]<<" ";
}
void Matrix::Show(int Hbeg,int Hend,int Wbeg,int Wend)
{
if(Hend<h &&Hbeg>=0 && Wend<w && Wbeg>=0)
{
for(int i=Hbeg;i<=Hend;i++,cout<<endl)
for(int j=Wbeg;j<=Wend;j++)
cout<<a[i][j]<<" ";
}
}
void Matrix::SetH(int H)
{
int **b;// новый участок памяти
b=new int*[H];// выделение памяти под строки
for(int i=0;i<H;i++)
{
b[i]=new int[w];// выделение памяти под каждую строку
for(int j=0;j<w;j++)
b[i][j]=0; // сразу обнуляем строки
}
 
for(int i=0;i<H && i<h;i++)
for(int j=0;j<w; j++)
b[i][j]=a[i][j]; // копируем информацию
// устанавливаем новое кол-во строк
 
for(int i=0;i<h;i++)
delete [] a[i]; // очистка памяти из под старой информации
delete [] a;
h=H;
a=b;
 
}
void Matrix::SetW(int W)
{
int **b;
b=new int*[h];// выделение памяти под строки
for(int i=0;i<h;i++)
{
b[i]=new int[W];// выделение памяти под каждую строку
for(int j=0;j<W;j++)
b[i][j]=0; // сразу обнуляем строки
}
 
for(int i=0;i<h;i++)
for(int j=0;j<w &&j<W; j++)
b[i][j]=a[i][j]; // копируем информацию
 
 
for(int i=0;i<h;i++) // очистка памяти из под старой информации
delete [] a[i];
delete [] a;
w=W; // устанавливаем новое кол-во столбцов
a=b;
}
 
int main()
{
    register int i,j;   //Переменные для циклов
    Matrix *MyMatrix = new Matrix(10,10);   //Твоя матрица
 
    for(i=0;i<10;i++)
        for(j=0;j<10;j++)
            MyMatrix->SetXY(i,j,(i>j)?1:0);     //Заполнение матрицы единицами ниже главной диагонали
 
    MyMatrix->Show();   //Вывод всей матрицы
 
    getchar();  //Ждём нажатия клавиши
 
    MyMatrix->Show(2,7,1,3);    //Вывод части матрицы 6 строк, 3 столбца, начиная с элемента 3,2
 
    getchar();
 
    MyMatrix->SetH(5);
    MyMatrix->SetW(15); //Изменяем матрицу на размеры 5x15
 
    for(i=0;i<5;i++)
        for(j=0;j<15;j++)
            MyMatrix->SetXY(i,j,rand()%10);     //Заполняем матрицу случайными значениями
 
    MyMatrix->Show();   //Вывод всей новой матрицы
 
    getchar();
 
    MyMatrix->Show(1,4,0,5);    //Вывод части матрицы 6 столбцов, 4 строки, начиная с элемента 2,1
 
    getchar();
 
    delete MyMatrix;    //Удаляем матрицу
return 0 ;
}
переделать нужно вот эту часть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
int main()
{
    register int i,j;   //Переменные для циклов
    Matrix *MyMatrix = new Matrix(10,10);   //Твоя матрица
 
    for(i=0;i<10;i++)
        for(j=0;j<10;j++)
            MyMatrix->SetXY(i,j,(i>j)?1:0);     //Заполнение матрицы единицами ниже главной диагонали
 
    MyMatrix->Show();   //Вывод всей матрицы
 
    getchar();  //Ждём нажатия клавиши
 
    MyMatrix->Show(2,7,1,3);    //Вывод части матрицы 6 строк, 3 столбца, начиная с элемента 3,2
 
    getchar();
 
    MyMatrix->SetH(5);
    MyMatrix->SetW(15); //Изменяем матрицу на размеры 5x15
 
    for(i=0;i<5;i++)
        for(j=0;j<15;j++)
            MyMatrix->SetXY(i,j,rand()%10);     //Заполняем матрицу случайными значениями
 
    MyMatrix->Show();   //Вывод всей новой матрицы
 
    getchar();
 
    MyMatrix->Show(1,4,0,5);    //Вывод части матрицы 6 столбцов, 4 строки, начиная с элемента 2,1
 
    getchar();
 
    delete MyMatrix;    //Удаляем матрицу
return 0 ;
}
Буду очень благодарен тому, кто поможет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 18:30     Построить описание класса
Посмотрите здесь:

Построить описание класса (ошибки и вопрос) C++
Построить описание класса, содержащего информацию о почтовом адресе организации C++
Построить описание класса, содержащего информацию об учащемся колледжа C++
По умолчанию Построить описание класса, содержащего информацию о почтовом адресе организации C++
C++ Как построить экземпляр дочернего класса на основе готового экземпляра базового класса?
Составить описание класса "3D вектор". Объявить объекты класса и продемонстрировать работу методов C++
C++ Построить описание класса, содержащего информацию об оргтехнике
Построить описание класса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru