Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_informatika.doc
Скачиваний:
17
Добавлен:
02.04.2015
Размер:
13.85 Mб
Скачать

Работа с массивами в C/C++

Методические указания к выполнению контрольных работ по курсу «Информатика»

Воронеж 2014

Общие вопросы

Целью курса является приобретение практических навыков по составлению алгоритмов решения задач и написания программ на высокоуровневых языках С или С++.

В данных методических указаниях приведены задания к контрольнной работе, посвященным работе с массивами в языках программирования C и С++. В них подробно описаны принципы работы с одномерными массивами, основные алгоритмы сортировки массивов, поиска в массиве заданного значения, работа с двумерными массивами. Все примеры и алгоритмы снабжены детальным описанием и программным кодом на С++.

В ходе выполнения каждого задания разрабатывается и отлаживается консольная программа, написанная на языке C или С++. Результат работы оценивается в процессе тестирования программы на наборе контрольных примеров. Вариант выбирается по 2-м последним цифрам кода зачетной книжки, если такого варианта нет, то по сумме этих цифр.

Отчет по работе должен содержать:

  • титульный лист;

  • текст задания на лабораторную работу;

  • краткую теоретическую часть по заданию и алгоритм;

  • текст программы;

  • пример выполнения программы (введенные данные и полученный результат);

  • вывод по проделанной работе.

Одномерные массивы

Под массивом понимается совокупность конечного числа данных одного типа. При описании массива обязательно указываются тип элементов массива, его имя и в квадратных скобках размер. Размер - это количество элементов в массиве.

Примеры описания массива:

int mas[10]; //описан массив с именем mas, состоящий из 10

//целочисленных элементов double A[5], B[7];

//описаны два вещественных массива A и B,

//состоящие из 5 и 7 элементов

Примечание.

При описании массива используются те же модификаторы класса памяти, const, что и для простых переменных.

[класс памяти] [const] тип идентификатор [размер] [инициализация];

Одномерный массив соответствует математическому понятию вектора -строки или вектора-столбца.

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

const int N = 100; double Ar1[N];

long int Ar2[2*N];

Примечание.

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

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

Например,

int mas[10] = {-3, 1, 5}; //первые 3 элемента массива mas

//инициализируются значениями -3, 1, 5,

//а остальные значением 0

double A[5] = {0.1, 0.2, 0.3, 0.4, 0.5},

B[7] = {0.0}; //все элементы массива A инициализированы //значениями из списка, все 7 элементов

// массива B инициализированы значением 0

Примечание.

Если при описании в квадратных скобках опущен размер массива, то обязательно должна присутствовать инициализация массива. В этом случае размер массива будет равен количеству инициализирующих значений.

int C[] = {9, 5, 1}; //описан массив C из трех элементов

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

Например,

A[0] = A[0] + 10;

A[1] = A[2]*B[6];

for (int i = 0; i < 10; i++) mas[i] *= 2;

В оперативной памяти элементы массива располагаются непрерывно соседних ячейках.

в

Примечание.

Типичной ошибкой начинающих программистов при использовании массивов является обращение к несуществующему элементу, т.е. выход индекса за допустимое значение. Компилятор языков C/C++ такие ошибки не отслеживает.

Рассмотрим принципы работы с одномерными массивами на следующих примерах.

Пример 1. Вычисление суммы квадратов элементов массива.

#include "iostream" int main()

{

const int N = 10; int i;

double mas[N] = {0.0}, Sum = 0.0;

//ввод массива

cout << "Введите элементы массива:\n"; for (i = 0; i < N; i +

{

cout << "mas[" << i << "] -> "; cin >> mas[i];

}

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

for (i = 0; i < N; i++) Sum = Sum + mas[i]*mas[i];

cout << "Сумма квадратов элементов равна " << Sum << "\n"; return 0;

}

На рис. 1 показана экранная форма приложения с введенными исходными данными и результатом выполнения.

Пример 2. Вычисление диапазона значений элементов массива (диапазон значений равен разности значения максимального элемента и значения минимального элемента).

const int N = 10; int i;

double mas[N], masMin, masMax, range;

//ввод массива

//находим минимальное и максимальное значение элементов массива masMin = mas[0];

masMax = mas[0];

for (i = 1; i < N; i++)

{

if (mas[i] < masMin)

masMin = mas[i];

if (mas[i] > masMax)

masMax = mas[i];

}

// вычисляем диапазон range = masMax - masMin;

Пример 3. Поиск индекса минимального элемента.

const int N = 10; int i, indMin; double mas[N];

//находим индекс минимального элемента массива indMin = 0;

for (i = 1; i < N; i++)

if (mas[i] < mas[indMin])

indMin = i;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]