
C/C++
C++ для начинающих, матрица.
Дана квадратная матрица. Размер матрицы определяет пользователь. Произвести процедуру транспонирования. Задачу выполнить в виде процедуры на языке С++


#include <iostream>
#include <random>
using namespace std;
int** create(size_t rank) {
auto matrix = new int* [rank];
for (auto i = 0U; i < rank; ++i) matrix[i] = new int[rank];
return matrix;
}
int** destroy(int** matrix, size_t rank) {
if (matrix != nullptr) {
for (auto i = 0U; i < rank; ++i) delete[] matrix[i];
delete[] matrix;
}
return nullptr;
}
void fill(int** mx, size_t rk) {
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < rk; ++i)
for (auto j = 0U; j < rk; ++j)
mx[i][j] = uid(gen);
}
void show(int** mx, size_t rk) {
for (auto i = 0U; i < rk; ++i) {
for (auto j = 0U; j < rk; ++j) cout << mx[i][j] << ' ';
puts("");
}
puts("");
}
void transpose(int** mx, size_t rk) {
for (auto i = 0U; i < rk; ++i) {
for (auto j = i + 1U; j < rk; ++j) {
if (i != j) swap(mx[i][j], mx[j][i]);
}
}
}
size_t input(const char* msg) {
cout << msg;
size_t value;
cin >> value;
puts("");
return value;
}
int main() {
size_t rank = input("Rank: ");
auto matrix = create(rank);
fill(matrix, rank);
show(matrix, rank);
transpose(matrix, rank);
show(matrix, rank);
matrix = destroy(matrix, rank);
system("pause > nul");
}
#include <random>
using namespace std;
int** create(size_t rank) {
auto matrix = new int* [rank];
for (auto i = 0U; i < rank; ++i) matrix[i] = new int[rank];
return matrix;
}
int** destroy(int** matrix, size_t rank) {
if (matrix != nullptr) {
for (auto i = 0U; i < rank; ++i) delete[] matrix[i];
delete[] matrix;
}
return nullptr;
}
void fill(int** mx, size_t rk) {
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < rk; ++i)
for (auto j = 0U; j < rk; ++j)
mx[i][j] = uid(gen);
}
void show(int** mx, size_t rk) {
for (auto i = 0U; i < rk; ++i) {
for (auto j = 0U; j < rk; ++j) cout << mx[i][j] << ' ';
puts("");
}
puts("");
}
void transpose(int** mx, size_t rk) {
for (auto i = 0U; i < rk; ++i) {
for (auto j = i + 1U; j < rk; ++j) {
if (i != j) swap(mx[i][j], mx[j][i]);
}
}
}
size_t input(const char* msg) {
cout << msg;
size_t value;
cin >> value;
puts("");
return value;
}
int main() {
size_t rank = input("Rank: ");
auto matrix = create(rank);
fill(matrix, rank);
show(matrix, rank);
transpose(matrix, rank);
show(matrix, rank);
matrix = destroy(matrix, rank);
system("pause > nul");
}
В плюсах я бы сделала переопределение операций.
С матрицами отлично работает, вот только препод о таком вероятно не слышал. Двойку поставит. =)
С матрицами отлично работает, вот только препод о таком вероятно не слышал. Двойку поставит. =)
Похожие вопросы
- C++Дана целочисленная матрица размера mn. Найти матрицу, получающуюся перестановкой столбцов
- Помогите новичку с программированием и матрицами C++
- Матрицы, массивы C++
- Помогите написать литсинг на C++ Дана целочисленная квадратная матрица. Определить: ↓↓↓
- Как передать матрицу размером n в процедуру? C++
- Задача по матрице C++
- Матрица в C++
- Элементы Матрицы C++
- Найти максимальный элементы в строке матрицы
- Чёт не пойму, как сделать рандомные значения матрицы через массив, прошу доработать, пж прогу!