#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 передать длину массива.
Поделитесь своими знаниями, ответьте на вопрос:
Напишите программу для решения . в видеоигре игрок выигрывает 50 очков, если он сбивает самолет, 100 очков, если он сбивает ракету, 200 очков, если он сбивает спутник. составьте программу, которая выведет на экран число очков игрока, который сбил а самолетов, в ракет и с спутников.
a, b, c, d:Integer;
begin
Writeln('Ведите сколько вы сбили самолётов:');
readln(a);
Writeln('Ведите сколько вы сбили ракет:');
readln(b);
Writeln('Ведите сколько вы сбили спутников:');
readln(c);
a:=a*50;
b:=b*50;
c:=c*50;
d:=a+b+c;
writeln('У вас ', d, ' очков');
end.