Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прак. ОАиП 230401.doc
Скачиваний:
16
Добавлен:
17.02.2016
Размер:
375.81 Кб
Скачать

Контрольные вопросы и задания:

  1. Каково назначение циклов?

  2. Укажите общий вид записи каждой циклической конструкции в С++.

  3. Как работает оператор for?

  4. Каким образом в теле цикла записывается несколько операторов?

  5. Можно ли в условии прекращения цикла использовать логические операции? Почему?

Рекомендуемая литература: 1.3, 1.4, 1.5, 1.7, 2.1, 2.2.

Практическое занятие №16

Тема: Создание одномерных и многомерных массивов

Цель: систематизация знаний о массивах, закрепление умений и навыков по описанию и обработке массивов.

Вид работы: фронтальный.

Время выполнения: 2 часа.

Теоретический материал:

Массив - это упорядоченный набор однотипных элементов. Массивы можно описывать следующим образом:

тип_данных имя_массива [ размер массива ];

Используя имя массива и индекс, можно адресоваться к элементам массива:

имя_массива [ значение индекса ]

Значения индекса должны лежать в диапазоне от нуля до величины, на единицу меньшей, чем размер массива, указанный при его описании.

Вот несколько примеров описания массивов:

char name [20];

int grades [125];

float income [30] [10];

Первый из массивов (name) содержит 20 символов. Обращением к элементам массива может быть name [0], name [1], ...,name[19].

Второй массив (grades) содержит 125 целых чисел. Обращением к элементам массива может быть grades [0],grades [1],...,grades[124].

Третий массив (incom) содержит 300 вещественных чисел, это матрица, т.к. указано два индекса (количество тсрок и столбцов). Обращением к элементам массива может быть income [0] [0], incom[0] [1],...,income[29] [9].

Для обработки одномерного массива применяется один цикл, для совершения операций над матрицами нужны два цикла (для строк и столбцов).

Задания:

  1. Задайте массив S(n) случайным образом. Подсчитайте в нём количество нулевых элементов.

  2. Заполните матрицу случайными целыми числами в диапазоне от -10 до 12. Определите максимальный и минимальный элементы, поменяёте их местами. На экран выведите обе матрицы: исходную и преобразованную.

  3. *Упорядочьте массив Y(n) по возрастанию.

Ход работы: в тетрадь оформите блок-схемы и листинги программ

1. Описание одномерного массива может выглядеть так:

int S[50];

Точная размерность массива вводится с клавиатуры после описания. Для заполнения массива случайным образом используются функции randomize() и random(n) из библиотеки stdlib.h. Функция random(n) генерирует набор случайных чисел в диапазоне от 0 до n-1, а функция randomize() меняет сам набор чисел. Подсчёт количества нулевых элементов осуществляется в том же цикле, где происходит заполнение массива:

if (S[i]==0) k++;

Количество равных нулю элементов обозначено переменной k.

2. Для получения случайных чисел из определённого диапазона, например, от -10 до 12 включительно, применим алгоритм: а) определяется разность между границами и прибавляется единица: 12-(-10) +1 = 23; б) записывается генератор случайных чисел от найденной величины с прибавлением начальной границы диапазона: x[i]=random(23). В результате в массиве x будут записаны числа от -10 до 12 включительно.

Предположим, что максимальным и минимальным является нулевой элемент массива, тогда переменным min и max присваивается значение x[0]. Во вложенных циклах происходит сравнение min и max со всеми остальными элементами матрицы: если x[i][j] меньше min, то min присваивает значение x[i][j] и запоминаются номера элемента (например, mini=i; minj=j). Аналогично выбирается максимальный элемент. Затем мин6имальный и максимальный элементы меняются местами: x[mini][minj]=max; x[maxi][maxj]=min;. На экран выводится преобразованная матрица.

3. *Третья задача является дополнительной. Сортировка массива может быть произведена любым способом.