Предмет: Информатика, автор: kyulagvod228

C++ Создать функцию, которая на вход принимает одномерный массив. Из одномерного массива размером M x N элементов создается двухмерный массив с M столбцами и N строками. Данный двухмерный массив обрабатывается согласно варианту. Потом этот двухмерный массив преобразовывается обратно в одномерный и возвращается из функции.
Умножить каждый элемент каждой строки матрицы на среднее значение элементов соответствующей строки. Вернуть сумму средних значений строк матрицы.


divanniy: Не совсем понятно условие. Сделал так, как понял я.
Не понимаю, зачем создавать второй массив, когда можно с одномерным работать как с двумерным.
Не понимаю, почему сначала написано, что нужно возвратить массив из функции, а потом написано, что вернуть сумму средних значений строк матрицы.

Ответы

Автор ответа: divanniy
0

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;

}

Похожие вопросы
Предмет: Информатика, автор: Аноним
Предмет: Русский язык, автор: serj465