Создать 4 функции:
1: Функция создает двумерный динамический массив и возвращает указатель на него, в параметры принимает количество размеры массива.
2: Функция заполняет двумерный массив случайными значениями.
3: Функция выводит на консоль элементы массива через разделитель .
4: Функция удаляет двумерный динамический массив.
Хто хоть как нибудь может помочь, буду очень и очень благодарен!
Другие языки программирования и технологии
Помогите з функциями в с++ плиииз
#include <iostream>
#include <random>
#include <string>
using namespace std;
int** create_matrix(const size_t, const size_t);
int randomize(int a, int b);
void destroy(int** matrix, size_t row);
int* create_vector(const size_t);
void delete_vector(int*);
void random_vector(int*, size_t, int, int);
void random_matrix(int**, size_t, size_t, int, int);
void print_vector(int*, size_t, string);
void print_matrix(int**, size_t, size_t, string);
int main() {
setlocale(LC_CTYPE, "Russian");
cout << "Введите количество строк матрицы: ";
size_t rows;
cin >> rows;
cout << "Введите количество столбцов матрицы: ";
size_t cols;
cin >> cols;
int** matrix = nullptr;
if (matrix = create_matrix(rows, cols)) {
int a, b;
a = randomize(10, 25);
b = randomize(50, 99);
random_matrix(matrix, rows, cols, a, b);
string delim;
cout << "Введите разделитель: ";
cin.sync();
getline(cin, delim);
print_matrix(matrix, rows, cols, delim);
destroy(matrix, rows);
matrix = nullptr;
}
cin.sync();
cin.get();
}
// вывод матрицы в консоль через разделитель
void print_matrix(int** matrix, size_t rows, size_t cols, string delim) {
for (size_t row = 0; row < rows; ++row) print_vector(matrix[row], cols, delim);
}
void print_vector(int* vector, size_t size, string delim) {
int* p = vector;
int* q = vector + size;
while (p != q - 1) {
cout << *p << delim;
++p;
}
cout << *p << '\n';
}
// заполняет матрицу случайными целыми числами
void random_matrix(int** matrix, size_t rows, size_t cols, int l, int r) {
for (size_t row = 0; row < rows; ++row) random_vector(matrix[row], cols, l, r);
}
void random_vector(int* vector, size_t size, int l, int r) {
if (l > r) swap(l, r);
int* q = vector + size;
for (int* p = vector; p != q; ++p) *p = randomize(l, r);
}
int randomize(int a, int b) {
if (a > b) swap(a, b);
uniform_int_distribution<int> rand(a, b);
random_device rnd;
return rand(rnd);
}
// освобождает память выделенную под матрицу
void destroy(int** matrix, size_t row) {
if (matrix && row) {
for (size_t r = 0; r < row; ++r) delete[] matrix[r];
delete[] matrix;
}
}
// создает двумерный динамический массив и возвращает указатель на него
int** create_matrix(const size_t rows, const size_t cols) {
int** ptr = nullptr;
if (ptr = new(nothrow) int*[rows]) {
for (size_t row = 0; row < rows; ++row) {
if (ptr[row] = create_vector(cols));
else {
for (size_t r = 0; r < row; ++r) delete[] ptr[r];
ptr = nullptr;
break;
}
}
}
return ptr;
}
int* create_vector(const size_t size) {
return new(nothrow) int[size];
}
void delete_vector(int* ptr) {
if (ptr) delete[] ptr;
}
#include <random>
#include <string>
using namespace std;
int** create_matrix(const size_t, const size_t);
int randomize(int a, int b);
void destroy(int** matrix, size_t row);
int* create_vector(const size_t);
void delete_vector(int*);
void random_vector(int*, size_t, int, int);
void random_matrix(int**, size_t, size_t, int, int);
void print_vector(int*, size_t, string);
void print_matrix(int**, size_t, size_t, string);
int main() {
setlocale(LC_CTYPE, "Russian");
cout << "Введите количество строк матрицы: ";
size_t rows;
cin >> rows;
cout << "Введите количество столбцов матрицы: ";
size_t cols;
cin >> cols;
int** matrix = nullptr;
if (matrix = create_matrix(rows, cols)) {
int a, b;
a = randomize(10, 25);
b = randomize(50, 99);
random_matrix(matrix, rows, cols, a, b);
string delim;
cout << "Введите разделитель: ";
cin.sync();
getline(cin, delim);
print_matrix(matrix, rows, cols, delim);
destroy(matrix, rows);
matrix = nullptr;
}
cin.sync();
cin.get();
}
// вывод матрицы в консоль через разделитель
void print_matrix(int** matrix, size_t rows, size_t cols, string delim) {
for (size_t row = 0; row < rows; ++row) print_vector(matrix[row], cols, delim);
}
void print_vector(int* vector, size_t size, string delim) {
int* p = vector;
int* q = vector + size;
while (p != q - 1) {
cout << *p << delim;
++p;
}
cout << *p << '\n';
}
// заполняет матрицу случайными целыми числами
void random_matrix(int** matrix, size_t rows, size_t cols, int l, int r) {
for (size_t row = 0; row < rows; ++row) random_vector(matrix[row], cols, l, r);
}
void random_vector(int* vector, size_t size, int l, int r) {
if (l > r) swap(l, r);
int* q = vector + size;
for (int* p = vector; p != q; ++p) *p = randomize(l, r);
}
int randomize(int a, int b) {
if (a > b) swap(a, b);
uniform_int_distribution<int> rand(a, b);
random_device rnd;
return rand(rnd);
}
// освобождает память выделенную под матрицу
void destroy(int** matrix, size_t row) {
if (matrix && row) {
for (size_t r = 0; r < row; ++r) delete[] matrix[r];
delete[] matrix;
}
}
// создает двумерный динамический массив и возвращает указатель на него
int** create_matrix(const size_t rows, const size_t cols) {
int** ptr = nullptr;
if (ptr = new(nothrow) int*[rows]) {
for (size_t row = 0; row < rows; ++row) {
if (ptr[row] = create_vector(cols));
else {
for (size_t r = 0; r < row; ++r) delete[] ptr[r];
ptr = nullptr;
break;
}
}
}
return ptr;
}
int* create_vector(const size_t size) {
return new(nothrow) int[size];
}
void delete_vector(int* ptr) {
if (ptr) delete[] ptr;
}
Вадим Мифтаков
Боже мой, спс, есть в мире добрые люди) Как вам отблагодарить?)
Manat Kasen
а как удалось сохранить текст в скобочках? а то все пустые инклуды вылазят?
Похожие вопросы
- Помогите оформить функцию в Си
- Помогите сделать функцию для массива.
- Помогите Написать програмку на си ) Плиииз)
- Математики помогите. Нужна функция графика полуокружности.
- Помогите с информатикой. Вопрос по С++: написание функций с помощью void
- Привет, помогите с программированием на СИ, передача массива в функцию..
- Помогите с Си. Вопрос по заданию (насчет типизированной функции, которая должна возвращать массив)
- Помогите правильно построить функцию в Си
- помогите пожалуйста. решите задачу (функции) в с++
- Помогите мне с рекурсивной функцией!