Многомерные массивы

Лабораторная работа № 7

Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например

int a[6][8];

задает описание двумерного массива из 6 строк и 8 столбцов. В памяти такой массив располагается в последовательных ячейках построчно. Для доступа к элементу многомерного массива указываются все его индексы, например a[2][4] – элемент массива, расположенный во 2 строке, 4 столбце (не следует забывать, что элементы массива нумеруются с 0).

Примеры:

  1. Определим в целочисленной матрице номер строки, которая содержит наибольшее количество элементов, равных 0:

#include <iostream>

using namespace std;

int main()

{

//Задаем максимальное допустимое количество строк и столбцов

const int MAX_ROW_COUNT = 100;

const int MAX_COL_COUNT = 100;

//Определяем массив a

int a[MAX_ROW_COUNT][MAX_COL_COUNT];

//Определяем переменные для хранения количества строк и столбцов

// (начальных строк и начальных столбцов, которые реально используются

// для хранения элементов в массиве a)

int nRows, nCols;

//Вводим размеры матрицы (количество строк и столбцов)

cout << "Enter matrix sizes" << endl;

cout << " rows count: ";

cin >> nRows;

cout << " cols count: ";

cin >> nCols;

//Вводим сами элементы матрицы

cout << "Enter matrix: " << endl;

for (int i = 0; i < nRows; i++)

{

for (int j = 0; j < nCols; j++)

cin >> a[i][j];

}

//Определяем переменные, необходимые для вычислений

//Текущий индекс строки, содержащей максимальное количество нулей

int max0RowIndex = 0;

//Количество нулей в max0RowIndex-й строке матрицы

int max0Count = 0;

//Внешний цикл перебирает все индексы строк матрицы

for (int i = 0; i < nRows; i++)

{

//Данная переменная используется для подсчета числа нулей

// в очередной i-й строке

int cur0Count = 0;

//Пробегаемся по всем элементам i-й строки, для этого

//j принимает во вложенном цикле все возможные индексы столбцов

for (int j = 0; j < nCols; j++)

//Если очередной элемент равен 0, то

if (a[i][j] == 0)

cur0Count++; //увеличиваем счетчик количества таких элементов на 1

//Если количество нулевых элементов i-й строки превышает

//текущеее максимальное количество, то

if (cur0Count > max0Count)

{

//сохраняем в качестве текущего максимального количества

//число нулей в i-й строке

max0Count = cur0Count;

//сохраняем i в качестве текущего индекса строки, содержашей

//максимальное количество нулей

max0RowIndex = i;

}

}

//Выводим на экран какая строка содержит максимальное количество нулей.

cout << "Row " << max0RowIndex << " contains " << max0Count << " zero(es)." << endl;

return 0;

}

Задание 1. Дан двумерный массив размера n х m целых чисел. Размеры массива и сами элементы вводятся с клавиатуры. Определить по вариантам:

  1. сумму элементов массива, больших 30.
  2. количество элементов массива, меньших 50.
  3. количество нечетных элементов массива.
  4. среднее арифметическое четных элементов массива.
  5. сумму тех элементов массива, сумма индексов которых равна p.
  6. сумму четных элементов массива.
  7. среднее арифметическое нечетных элементов массива.
  8. сумму тех элементов массива, сумма индексов которых кратна 3.
  9. среднее геометрическое всех нечетных элементов массива.
  10. количество четных элементов массива, расположенных в строках с нечетными индексами.
  11. сумму нечетных элементов массива, расположенных в строках с четными индексами.
  12. сумму модулей всех отрицательных элементов массива.
  13. произведение всех положительных элементов, сумма индексов которых является четным числом.

Задание 2. Решить задачу по вариантам:

1) Дана действительная матрица размера n x m, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.

2) Дана действительная матрица размера n x m. Получить новую матрицу путем вычитания из каждого элемента данной матрицы ее наименьшего элемента.

3) В данной действительной квадратной матрице порядка n найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

4) Дана действительная матрица размера n x m. Получить новую матрицу путем прибавления к каждому элементу данной матрицы ее наибольшего элемента.

5) В данной действительной квадратной матрице порядка n найти произведение элементов столбца, в котором расположен элемент с наибольшим значением. Предполагается, что такой элемент единственный.

6) В данной действительной квадратной матрице порядка n найти произведение элементов строки, в котором расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

7) В данной действительной матрице размера n x m поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны.

8) Характеристикой столбца матрицы назовем произведение элементов с четными номерами строк. Определить номер столбца с наибольшей характеристикой.

9) Характеристикой строки целочисленной матрицы назовем сумму ее элементов c четными номерами столбцов. Определить номер строки с наименьшей характеристикой.

10) В данной действительной матрице размера n x m поменять местами столбец, содержащий элемент с наибольшим значением, со столбцом, содержащим элемент с наименьшим значением. Предполагается, что эти элементы единственны.

11) В данной действительной матрице размера n x2 m поменять местами все четные и нечетные столбцы: 0-й столбец с 1-ым столбцом, 2-й с 3-им и т.п.

12) В данной действительной матрице размера n x m поменять местами порядок столбцов на обратный, т.е. переставить местами 0-й и m-1-й столбец, 1-й и m-2-й столбец, 2-й и m-3-й и т.п.

13) Дана действительная матрица A размера n x m. Найти все седловые элементы матрицы. Элемент матрицы aij называется седловым, если он является минимальным в i -й строке матрицы и максимальным в j -м столбце матрицы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: