|   Войти

Массивы

Для хранения большого числа каких-либо однотипных данных в программировании применяются массивы.

Массив – это структура данных, представленная в виде группы ячеек одного типа, объединенных под одним общим именем. Отдельная ячейка данных массива называется элементом массива.

Например, учащиеся класса (25 человек) написали контрольную работу, и нужно, все оценки внести в программу для обработки. Без использования массивов пришлось бы создавать 25 отдельных переменных (с разными именами), в которых бы хранились оценки каждого ученика. Но это неудобно, особенно, если нужно было бы внести данные учащихся не только одного класса, а, например, всей школы. Массив же позволяет под одним именем хранить все данные об оценках учащихся. Каждая оценка будет в отдельном элементе массива (ячейке).

Чтобы создать массив из 25 элементов, нужно указать тип элементов массива, имя массива и количество элементов в квадратных скобках, например:

int a[25];

где int  - это тип элементов массива, a – это его имя, 25 – это количество элементов массива.

Каждый элемент массива имеет свой индекс (порядковый номер), и чтобы к этому элементу обратиться, нужно указать имя массива и индекс элемента:

a[15]=5; - элементу массива с индексом 15 присваиваем значение 5;

cout<<a[3]; - выводим на экран значение элемента массива с индексом 3;

cin>>a[20]; -  вводим с клавиатуры число и записываем его в элемент массива с индексом 20.

ВАЖНО: все элементы массива в языке C++ нумеруются с нуля. Поэтому самый первый элемент массива будет иметь индекс 0, а самый последний – на 1 меньше, чем количество элементов массива (для массива из 25 элементов индекс последнего элемента будет равен 24). Если вы ошибетесь с индексом и выйдете за пределы массива, компилятор вам об этом не сообщит, но работа программы и даже операционной системы может быть нарушена!

На следующем рисунке представлено схематическое изображение массива с именем arr из 10 элементов, в котором хранятся какие-то данные. Обратите внимание на индексы элементов:

Если значения элементов массива уже известны, то заполнить массив, можно при его объявлении, перечислив значения элементов массива через запятую в фигурных скобках, например для массива из 5 элементов это можно сделать так:

int a[5] = {10, 7, 15, 1, 20}; 

Если выполнить команду cout<<a[0], то на экран будет выведено 10, а если cout<<a[3], то на экране мы увидим 1.

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

Следующая программа выполняет данное действие.

Скачайте программу, написанную на языке C++, поместите скачанный файл ARRAY.CPP в папку C:\TCPP\BIN\.

Запустите DOSBox (Как настроить эту программу можно посмотреть ЗДЕСЬ).

Нажмите клавишу F3. Выберите файл ARRRAY.CPP и нажмите клавишу Enter.

На экране появится текст программы:

Рассмотрим эту программу подробнее:

#include<iostream.h>

#include<conio.h>  - подключаем два необходимых для работы программы модуля.

void main(){

  int temp[12]; - создаем массив с именем temp типа int, состоящий из 12 элементов. Здесь мы будем хранить значения температуры воздуха в течение суток.

  for (int i=0;i<12;i++){ -  цикл, в котором переменная i будет проходить значения от 0 до 11 (Описания цикла for смотри ЗДЕСЬ).

     clrscr(); - очищаем экран

     cout<<"Введите температуру, измеренную в "<<i*2<<":00\n"; - Выводим фразу о необходимости ввести температуру, измеренную в определенное время суток. Поскольку измерять необходимо каждые два часа, то мы будем измерять в 0:00, 2:00, 4:00, 6:00 и так далее до 22:00. Чтобы вычислить нужное время мы переменную i умножаем на 2. «\n» переводит курсор на следующую строчку.

     cin>>temp[i]; - на клавиатуре вводим значение температуры и нажимаем клавишу Enter. Введенное число запишется в соответствующий элемент массива.

  } – конец цикла for.

  int sum=0; - создаем переменную sum, в которой мы будем суммировать полученные значения температуры. Начальное значение суммы равно 0.

  for(i=0;i<12;i++) sum=sum+temp[i]; - используя цикл, проходим по всем элементам массива (переменная i проходит значения от 0 до 11) и добавляем значение каждого элемента массива к переменной sum. Конструкция sum=sum+temp[i] означает, что мы прибавляем к значению переменной sum значение элемента массива temp с индексом i, и полученную сумму присваиваем к переменной sum (другими словами увеличиваем значение переменной sum на значение элемента массива temp[i]). В языке C++ эту конструкцию можно записать короче: sum+=temp[i]; После прохождения всего цикла мы в переменной sum получаем сумму всех измеренных температур.

  sum=sum/12; - значение переменной sum целочисленно делим на 12 (количество измеренний) и результат заносим в переменную sum. В результате этой операции мы получили в переменной sum среднее значение температуры в течение суток. В языке C++ эту конструкцию можно записать следующим образом: sum/=12.

  clrscr(); - очищаем экран.

  cout<<"Среднесуточная температура составила: "<<sum<<" градусов."; - выводим значение среднесуточной температуры на экран.

  getch(); - ожидаем нажатия любой клавиши для выхода из программы.

} – конец функции main и всей программы.

Чтобы запустить программу, нажимаем комбинацию клавиш Alt+R, выбираем в появившемся меню пункт Run и нажимаем клавишу Enter. Ни в коем случае не нажимайте для запуска программы комбинацию клавиш Ctrl+F9 – это закроет DOSBox!

Программа предлагает ввести температуру для 0:00 часов. Вводим значение, например 2:

После нажатия клавиши Enter, программа запросит температуру для 2:00 и т.д. Последнее значение температуры программа запросит для 22:00:

После нажатия клавиши Enter, программа выведет значение средней температуры за сутки:

При нажатии на любую клавишу программа закроется.

ЗАДАНИЕ: 1) Измените программу таким образом, чтобы средняя температура вычислялась не целочисленно, а с использованием вещественных чисел. 2) Напишите программу (или переделайте эту), которая будет вычислять среднюю оценку за контрольную работу в классе (пускай в классе учится 20 человек).