Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_информатика4.doc
Скачиваний:
59
Добавлен:
07.02.2015
Размер:
13.31 Mб
Скачать

Задание

  1. Запустите C++Builder.

  2. Составьте программу в соответствии с вашим вариантом задания (таблица), используя массивы. Размер массива задайте сами. Сделайте три варианта программы. В первом элементы массива определяются в программе, во втором задаются пользователем, а в третьем заполняются с помощью генератора случайных чисел. Исходный и конечный массивы выведите на экран.

  3. Выполните компиляцию программы. При наличии ошибок внести исправления.

  4. Сдайте отчет преподавателю.

Варианты

Задача

Диапазон изменения значений элементов массива

1

Вывести на экран все четные числа в массиве

[-100…100]

2

Определить число нулей и число единиц в массиве

0 или 1

3

Поменять 0 и 1 ролями

0 или 1

4

Определить, сколько значений в массиве превышают среднее значение

[-50…120]

5

Сгруппировать все ненулевые значения в начале массива

[-1…4]

6

Вычислить произведение элементов массива

[-20.5…50.5]

7

Вывести на экран все нечетные числа в массиве

[-60…20]

8

Найти количество положительных элементов в массиве

[-30…40]

9

Определить, есть ли в данном массиве два соседних элемента с одинаковыми знаками

[-100…50]

10

Переставить элементы массива в обратном порядке

[1…78]

11

Определить, сколько в массиве элементов, которые строго больше обоих своих соседей

[-3.2…104.2]

12

Сгруппировать все нулевые значения в начале массива

[-2…1]

13

Найти значение наибольшего элемента в массиве

[-40…70]

14

Циклически сдвинуть элементы массива вправо

[1…66]

15

Отсортировать массив по возрастанию

[-25…50]

16

Поменять у элементов массива знаки

[-36…70]

17

Вычислить разность элементов массива

[45.7…157.7]

18

Положительные элементы массива поменять местами с отрицательными

[-100…200]

19

Переставьте соседние элементы массива

[-25…80]

20

Найти значение наименьшего элемента в массиве

[-200…-30]

21

Найти количество отрицательных элементов в массиве

[-50…30]

22

Найти количество элементов массива, которые больше предыдущего элемента в этом массиве

[-10…20]

23

Отсортировать массив по убыванию

[-48…95]

24

Вычислить сумму элементов массива

[-34.6…23.6]

25

Циклически сдвинуть элементы массива влево

[-5…24]

Лабораторная работа 6 Многомерные массивы

Цель работы – познакомиться с многомерными массивами, приобрести навыки написания программ на языке C++ с использованием двумерных массивов.

Теория

Многомерные массивы – массивы, элементами которых являются массивы. Двумерные массивы можно представлять в виде квадратной таблицы, в которой первый индекс элемента означает номер строки, а второй индекс – номер столбца. Например, массив A[3][4] будет состоять из 12 элементов и его можно записать в виде:

A[0][0] A[0][1] A[0][2] A[0][3]

A[1][0] A[1][1] A[1][2] A[1][3]

A[2][0] A[2][1] A[2][2] A[2][3]

Определение многомерного массива:

type имя_массива [К1] [К2] … [КN];

Здесь N – размерность массива, К1 - количество в массиве элементов размерности N-1 каждый и т.д.

Пример

int ARRAY [4] [3] [6];

Трехмерный массив ARRAY состоит из четырех элементов, каждый из которых – двухмерный массив с размерами 3 на 6. В памяти массив ARRAY размещается в порядке возрастания самого правого индекса, т.е. самый младший адрес имеет элемент ARRAY [0] [0] [0], затем идет ARRAY [0] [0] [1] и т.д.

Многомерный массив подобно одномерному массиву может быть проинициализирован с помощью списка инициализаторов. Первыми инициализируются элементы с самыми маленькими индексами.

Пример

int MyArray[3][3][3] = {0,1,2,3,4,5,6,7,8,9,10,11};

Начальные значения получают следующие элементы трёхмерного массива:

MyArray[0][0][0] == 0

MyArray[0][0][1] == 1

MyArray[0][0][2] == 2

MyArray[0][1][0] == 3

MyArray[0][1][1] == 4

MyArray[0][1][2] == 5

MyArray[0][2][0] == 6

MyArray[0][2][1] == 7

MyArray[0][2][2] == 8

MyArray[1][0][0] == 9

MyArray[1][0][1] == 10

MyArray[1][0][2] == 11

Остальные элементы массива получают начальные значения в соответствии со статусом массива (в глобальном массиве значения остальных элементов равны 0, в локальном массиве элементам присваиваются неопределённые значения).

Дополнительные фигурные скобки в инициализаторе позволяют инициализировать отдельные фрагменты многомерного массива. Каждая пара фигурных скобок специфицирует значения, относящиеся к одной определённой размерности. Пустые фигурные скобки не допускаются.

Пример

int MyArray[3][3][3] = {{{0,1}}, {{100},{200,210},{300}},

{{1000},{2000,2100},{3000,3100,3200}}};

В результате выполнения этого оператора определения будут означены следующие элементы массива MyArray:

MyArray[0][0][0] == 0

MyArray[0][0][1] == 1

MyArray[1][0][0] == 100

MyArray[1][1][0] == 200

MyArray[1][1][1] == 210

MyArray[1][2][0] == 300

MyArray[2][0][0] == 1000

MyArray[2][1][0] == 2000

MyArray[2][1][1] == 2100

MyArray[2][2][0] == 3000

MyArray[2][2][1] == 3100

MyArray[2][2][2] == 3200

По аналогии с одномерным массивом, при явной инициализации массива входящего в состав многомерного массива его самая левая размерность может не указываться. Она определяется на основе инициализатора.

Пример

int MyArray[ ][3][3] = {{{0,1}}, {{100},{200,210},{300}},

{{1000},{2000,2100}}};

Транслятор понимает, что речь идёт об определении массива размерности 3*3*3.

Для считывания, вывода на экран и обработки многомерных массивов необходимо использовать вложенные циклы. Первый цикл – по первому индексу, второй цикл – по второму индексу, то есть по всем элементам в строках и т.д.

Пример

const int n=10, m=5;

int A[n][m];

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

{

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

cout<<A[i][j]<<" ";

cout<<endl;

}