C/C++
Здравствуйте, помогите пожалуйста написать программу на C++ с использованием функций
Вычислить суммы отрицательных элементов каждого столбца матриц А(n,n), B(m,m).
#include <iostream>
#include <iomanip>
#include <random>
#include <limits>
#define WIDTH 4U
using namespace std;
int** get_random_square_matrix(const size_t length) {
uniform_int_distribution<> uid(-99, 99);
mt19937 gen{ random_device()() };
auto matrix = new int* [length];
for (auto i = 0U; i < length; ++i) {
matrix[i] = new int[length];
for (auto j = 0U; j < length; ++j) {
matrix[i][j] = uid(gen);
}
}
return matrix;
}
int** destroy_matrix(int** matrix, const size_t length) {
if (matrix != nullptr) {
for (auto i = 0U; i < length; ++i) {
delete[] matrix[i];
}
delete[] matrix;
matrix = nullptr;
}
return matrix;
}
int* get_empty_vector(const size_t length) {
return new int[length];
}
int* destroy_vector(int* vec) {
if (vec != nullptr) {
delete[] vec;
vec = nullptr;
}
return vec;
}
long long sum_negative_elements(int* vec, const size_t length) {
auto sum = 0LL;
for (auto i = 0U; i < length; ++i) {
if (vec[i] < 0) {
sum += vec[i];
}
}
return sum;
}
void show(int* vec, const size_t length) {
for (auto i = 0U; i < length; ++i) {
cout << ' ' << setw(WIDTH) << vec[i];
}
puts("");
}
size_t set_length(const char* message) {
auto value = 0U;
while (!value) {
cout << message;
cin >> value;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
puts("");
return value;
}
int main() {
auto n = set_length("n: ");
auto a = get_random_square_matrix(n);
for (auto i = 0U; i < n; ++i) {
show(a[i], n);
}
puts("");
auto va = get_empty_vector(n);
for (auto j = 0U; j < n; ++j) {
for (auto i = 0U; i < n; ++i) {
va[i] = a[i][j];
}
auto sum = sum_negative_elements(va, n);
cout << ' ' << setw(WIDTH) << sum;
}
puts("\n");
va = destroy_vector(va);
a = destroy_matrix(a, n);
auto m = set_length("m: ");
auto b = get_random_square_matrix(m);
for (auto i = 0U; i < m; ++i) {
show(b[i], m);
}
puts("");
auto vb = get_empty_vector(m);
for (auto j = 0U; j < m; ++j) {
for (auto i = 0U; i < m; ++i) {
vb[i] = b[i][j];
}
auto sum = sum_negative_elements(vb, m);
cout << ' ' << setw(WIDTH) << sum;
}
puts("");
vb = destroy_vector(vb);
b = destroy_matrix(b, m);
system("pause > nul");
}
#include <iomanip>
#include <random>
#include <limits>
#define WIDTH 4U
using namespace std;
int** get_random_square_matrix(const size_t length) {
uniform_int_distribution<> uid(-99, 99);
mt19937 gen{ random_device()() };
auto matrix = new int* [length];
for (auto i = 0U; i < length; ++i) {
matrix[i] = new int[length];
for (auto j = 0U; j < length; ++j) {
matrix[i][j] = uid(gen);
}
}
return matrix;
}
int** destroy_matrix(int** matrix, const size_t length) {
if (matrix != nullptr) {
for (auto i = 0U; i < length; ++i) {
delete[] matrix[i];
}
delete[] matrix;
matrix = nullptr;
}
return matrix;
}
int* get_empty_vector(const size_t length) {
return new int[length];
}
int* destroy_vector(int* vec) {
if (vec != nullptr) {
delete[] vec;
vec = nullptr;
}
return vec;
}
long long sum_negative_elements(int* vec, const size_t length) {
auto sum = 0LL;
for (auto i = 0U; i < length; ++i) {
if (vec[i] < 0) {
sum += vec[i];
}
}
return sum;
}
void show(int* vec, const size_t length) {
for (auto i = 0U; i < length; ++i) {
cout << ' ' << setw(WIDTH) << vec[i];
}
puts("");
}
size_t set_length(const char* message) {
auto value = 0U;
while (!value) {
cout << message;
cin >> value;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
puts("");
return value;
}
int main() {
auto n = set_length("n: ");
auto a = get_random_square_matrix(n);
for (auto i = 0U; i < n; ++i) {
show(a[i], n);
}
puts("");
auto va = get_empty_vector(n);
for (auto j = 0U; j < n; ++j) {
for (auto i = 0U; i < n; ++i) {
va[i] = a[i][j];
}
auto sum = sum_negative_elements(va, n);
cout << ' ' << setw(WIDTH) << sum;
}
puts("\n");
va = destroy_vector(va);
a = destroy_matrix(a, n);
auto m = set_length("m: ");
auto b = get_random_square_matrix(m);
for (auto i = 0U; i < m; ++i) {
show(b[i], m);
}
puts("");
auto vb = get_empty_vector(m);
for (auto j = 0U; j < m; ++j) {
for (auto i = 0U; i < m; ++i) {
vb[i] = b[i][j];
}
auto sum = sum_negative_elements(vb, m);
cout << ' ' << setw(WIDTH) << sum;
}
puts("");
vb = destroy_vector(vb);
b = destroy_matrix(b, m);
system("pause > nul");
}
Похожие вопросы
- Здравствуйте, помогите пожалуйста написать программы на языке C++.
- Помоги пожалуйста написать программу на C++
- Помогите, пожалуйста, написать программу на C++ (массивы)
- Помогите пожалуйста написать программу на C++. Срочно нужно, пожалуйста.
- Помогите пожалуйста написать программу на C++. Очень нужно!
- Помогите пожалуйста написать программу на C
- Помогите пожалуйста написать программу небольшую в C++. Одномерный массив
- Помогите пожалуйста написать программу на Си
- Помогите пожалуйста написать код на c++, выводящий имя, фамилию и дату рождения нескольких человек
- Помогите пожалуйста написать код на C++