Треба в дуже Скласти блок-схему і програму, що ooраховує площу паралелограма. Нагадаємо, що площа паралелограма оораховується за формулою S=ah. Перевірити працездатність програми для таких даних: 1 а= 7,h= 9;
cout << "Сумма min " << r << ", сумма max " << b << endl;
return 0;
}
По поводу "всех объяснений" - я этого не понимаю. Написать что делает каждый оператор, зачем он тут и почему именно такой - это долгое и бессмысленное занятие, ответ будет объемом в несколько книжных страниц, но все равно толком ничего не даст. Если Вы не умеет программировать - учится надо не по ответу на задачу, а если умеете - никакое описание не нужно.
Единственная заморочка тут - передача длины массива в вызываемую функцию. В С++ с этим беда, потому обычно используют библиотечный класс Vector, где можно узнать длину массива. Вместо массива в С++ при вызове функции передается указатель на его первый элемент, поэтому информацию о длине массива получить нельзя. Так что нужно передавать еще один параметр - длину массива. Но в задании сказано, что параметра всего два и второй служит для получения максимальной из двух сумм. Но это при возвращении результата! Поэтому было принято решение при вызове функции в качестве b передать длину массива.
#include <iostream>
#include <time.h>
#include <vector>
using namespace std;
void print_array(int** arr, int n, int m) {
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
int** auto_input_matrix(int** arr, int n, int m) {
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < m; j++) {
arr[i][j] = rand() % 200 - 100;
}
}
return arr;
}
void print_vector(vector<long long> vec) {
for (long long elem : vec) {
cout << elem << " ";
}
cout << endl;
}
void print_vector(vector<int> vec) {
for (int elem : vec) {
cout << elem << " ";
}
cout << endl;
}
pair<vector<long long>, vector<int>> multiplying_positive_elements_of_an_array_and_find_max_of_an_array_line_by_line(int** arr, int n, int m) {
long long multi = 0;
bool key = false;
int max = -100;
int index = 0;
vector<long long> vec_multi;
vector<int> vec_max_index;
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < m; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
index = j;
}
if (arr[i][j] > 0) {
if (!key) {
multi = 1;
}
key = true;
multi *= arr[i][j];
}
}
vec_max_index.push_back(index);
vec_multi.push_back(multi);
max = -100;
key = false;
}
return make_pair(vec_multi, vec_max_index);
}
int main() {
srand(time(NULL));
setlocale(LC_ALL, "Russian");
int n, m;
cout << "Введите количество строк в массиве: ";
cin >> n;
cout << "Введите количество элементов в массиве построчно: ";
cin >> m;
int** array = new int* [n];
pair<vector<long long>, vector<int>> pair_vec;
for (size_t i = 0; i < n; i++) {
array[i] = new int[m];
}
array = auto_input_matrix(array, n, m);
print_array(array, n, m);
pair_vec = multiplying_positive_elements_of_an_array_and_find_max_of_an_array_line_by_line(array, n, m);
cout << "Перемножение построчно: " << endl;
print_vector(pair_vec.first);
cout << "Максимумы на индексах: " << endl;
print_vector(pair_vec.second);
delete[] array;
pair_vec.first.clear();
pair_vec.second.clear();
}
int r = minmax(a, b);
cout << "Сумма min " << r << ", сумма max " << b << endl;
return 0;
}
По поводу "всех объяснений" - я этого не понимаю. Написать что делает каждый оператор, зачем он тут и почему именно такой - это долгое и бессмысленное занятие, ответ будет объемом в несколько книжных страниц, но все равно толком ничего не даст. Если Вы не умеет программировать - учится надо не по ответу на задачу, а если умеете - никакое описание не нужно.
Единственная заморочка тут - передача длины массива в вызываемую функцию. В С++ с этим беда, потому обычно используют библиотечный класс Vector, где можно узнать длину массива. Вместо массива в С++ при вызове функции передается указатель на его первый элемент, поэтому информацию о длине массива получить нельзя. Так что нужно передавать еще один параметр - длину массива. Но в задании сказано, что параметра всего два и второй служит для получения максимальной из двух сумм. Но это при возвращении результата! Поэтому было принято решение при вызове функции в качестве b передать длину массива.