C++ Создать функцию, которая на вход принимает одномерный массив. Из одномерного массива размером M x N элементов создается двухмерный массив с M столбцами и N строками. Данный двухмерный массив обрабатывается согласно варианту. Потом этот двухмерный массив преобразовывается обратно в одномерный и возвращается из функции.
Умножить каждый элемент каждой строки матрицы на среднее значение элементов соответствующей строки. Вернуть сумму средних значений строк матрицы.
Answers & Comments
using namespace std;
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <ctime>
void massinit(int* mass, int masssizeM, int masssizeN) {
for (int i = 0; i < masssizeM * masssizeN; i++) {
mass[i] = rand() % 90 + 10;
}
}
void massout(int* mass, int masssizeM, int masssizeN) {
for (int i = 0; i < masssizeM; i++) {
for (int j = i * masssizeN; j < (i + 1) * masssizeN; j++) {
cout << setw(3) << mass[j] << " ";
}
cout << endl;
}
cout << endl << endl;
}
int twodimcount(int* mass, int masssizeM, int masssizeN) {
int returnval = 0;
for (int i = 0; i < masssizeM; i++) {
int avgvalue = 0;
for (int j = i * masssizeN; j < (i + 1) * masssizeN; j++) {
avgvalue += mass[j];
}
returnval += avgvalue;
avgvalue /= masssizeN;
for (int j = i * masssizeN; j < (i + 1) * masssizeN; j++) {
mass[j] += avgvalue;
}
}
cout << "Новый массив:" << endl;
massout(mass, masssizeM, masssizeN);
return returnval;
}
int main() {
setlocale(LC_ALL, "rus");
system("chcp 1251");
srand(time(0));
int M = rand() % 8 + 2;
int N = rand() % 8 + 2;
int a = 0;
int* mainmass = new int[M * N];
massinit(mainmass, M, N);
cout << "Изначальный массив:" << endl;
massout(mainmass, M, N);
a = twodimcount(mainmass, M, N);
cout << "Сумма средних значений строк новой матрицы: " << a << endl;
delete[] mainmass;
system("pause");
return 0;
}