Другие языки программирования и технологии
Помогите разработать класс матрицу =))
Вот : Разработать класс матрица . Конструктор по умолчанию, конструктор с указанной размерностью, вывод на экран, транспонирование матрицы !
Что-то получилось, но я неуверен в правильности:
======================
#include <iostream>
#include <ctime>
using namespace std;
class matrix{
public:
int a,b;
int c,d;
int **ar; // первый массив
int **art; // перевёрнутый массив
matrix(int n, int m){ // конструктор
a = n; // получаем параметры и передаём их как размер матрицы.
b = m;
}
void create(){ // создаём основной массив
ar = new int*[a];
for(int i(0); i < a; i++)
ar[i] = new int[b];
}
void createt(){ // создаём перевёрнутый массив
art = new int*[b];
for(int i(0); i < b; i++)
art[i] = new int[a];
}
void rnd(){ // заполняем случайными числами
c = 1;
d = 20;
for(int i(0); i < a; i++)
for(int j(0); j < b; j++)
ar[i][j] = rand() % (d - c + 1) + c;
}
void dis(){ // выводим на экран
for(int i(0); i < a; i++){
for(int j(0); j < b; j++){
cout.width(3);
cout << ar[i][j];
}
cout << endl;
}
}
void trns(){ // транспонируем матрицs
for(int i(0); i < b; i++)
for(int j(0); j < a; j++)
art[i][j] = ar[j][i];// значения одной матрицы присваиваем другой
}
void dist(){ // выводим на экран перевёрнутую матрицу
for(int i(0); i < b; i++){
for(int j(0); j < a; j++){
cout.width(3);
cout << art[i][j];
}
cout << endl;
}
}
void dlt(){ // удаляем динамический массив
for(int i(0); i < a; i++)
delete [] ar[i];
delete [] ar;
for(int i(0); i < b; i++)
delete [] art[i];
delete [] art;
}
~matrix(){
cout << "\nHere distructor works." << endl;
}
};
int main(){
int a,b;
cout << "Enter matrix size:\n";
cout << "Enter strings number: ";
cin >> a;
cout << "Enter column number: ";
cin >> b;
matrix m(a,b); // вызываем конструктор
m.create();
m.createt();
m.rnd();
m.dis();
cout << endl << endl;
m.trns();
m.dist();
m.dlt();
system("pause >> void");
return 0;
}
======================
#include <iostream>
#include <ctime>
using namespace std;
class matrix{
public:
int a,b;
int c,d;
int **ar; // первый массив
int **art; // перевёрнутый массив
matrix(int n, int m){ // конструктор
a = n; // получаем параметры и передаём их как размер матрицы.
b = m;
}
void create(){ // создаём основной массив
ar = new int*[a];
for(int i(0); i < a; i++)
ar[i] = new int[b];
}
void createt(){ // создаём перевёрнутый массив
art = new int*[b];
for(int i(0); i < b; i++)
art[i] = new int[a];
}
void rnd(){ // заполняем случайными числами
c = 1;
d = 20;
for(int i(0); i < a; i++)
for(int j(0); j < b; j++)
ar[i][j] = rand() % (d - c + 1) + c;
}
void dis(){ // выводим на экран
for(int i(0); i < a; i++){
for(int j(0); j < b; j++){
cout.width(3);
cout << ar[i][j];
}
cout << endl;
}
}
void trns(){ // транспонируем матрицs
for(int i(0); i < b; i++)
for(int j(0); j < a; j++)
art[i][j] = ar[j][i];// значения одной матрицы присваиваем другой
}
void dist(){ // выводим на экран перевёрнутую матрицу
for(int i(0); i < b; i++){
for(int j(0); j < a; j++){
cout.width(3);
cout << art[i][j];
}
cout << endl;
}
}
void dlt(){ // удаляем динамический массив
for(int i(0); i < a; i++)
delete [] ar[i];
delete [] ar;
for(int i(0); i < b; i++)
delete [] art[i];
delete [] art;
}
~matrix(){
cout << "\nHere distructor works." << endl;
}
};
int main(){
int a,b;
cout << "Enter matrix size:\n";
cout << "Enter strings number: ";
cin >> a;
cout << "Enter column number: ";
cin >> b;
matrix m(a,b); // вызываем конструктор
m.create();
m.createt();
m.rnd();
m.dis();
cout << endl << endl;
m.trns();
m.dist();
m.dlt();
system("pause >> void");
return 0;
}
Фууу. .
Очередная блондиночка с запросом "сделайте за меня нахаляву"
Помогать можно только тем кто хоть что-то делает.
Где пример твоих стараний? где конкретный вопрс про "делаю ТАК, а не срастается"?
Очередная блондиночка с запросом "сделайте за меня нахаляву"
Помогать можно только тем кто хоть что-то делает.
Где пример твоих стараний? где конкретный вопрс про "делаю ТАК, а не срастается"?
Похожие вопросы
- Разработать класс описывающий множество точек на плоскости, реализовать метод который возвращает наименьшее расстояние
- Помогите с обходим матрицы змейкой (нужно отредактировать формулу)
- Разработать Класс Person описывающий человека C++
- Помогите, разработать программу вычисления двух выражений, в ассемблереX= (a/2+b^2)/3*cY= (b^3-(12+x)/a)/c+2
- Помогите! Как задать матрицу(размером 3 на 4) в паскале, и найти её максимум и минимум?
- Помогите с построением матрицы Виженера на C#
- Помогите с классами в Delphi.
- Помогите !!!С++Работа с одномерными и двумерными массивами. В каждой строке матрицы F(k, k) элемент. лежащий на главной
- Помогите решить матрица на С++
- В чем ошибка? Помогите разобраться! (программа на С++: добавление столбца в матрицу)
Освобождение памяти надо делать в деструкторе, т. к. "программист" может не вызвать del.
pause >> void - В Windows создает файл с именем void, (а если он уже есть, то добавляет к содержимому этого файла) и выводит туда, что pause пыталась вывести на экран.
Если надо скрыть вывод, то pause > nul
Вообще использование system не совсем хорошо. Т. к. вызывает внешнюю команду ОС. Н-р в Linux нет команды pause и там system("pause") выдаст ошибку.
b = m;
Лучше было создать класс матрицы для хранения собственно одной матрицы, а транспонированную матрицу возвращать из метода. Ну или не возвращать, а ввести функцию транспонирования уже существующей.
Н-р если мы захотим создать просто матрицу, а транспонирование нам не нужно - память под неё всё равно будет выделяться в Вашем случае.
будет пытаться работать с пустым указателем на трансп. матрицу.
Сорь за небольшое занудство =)