Одномерные массивы
Хранение данных
Предположим, что вы разработали компьютерную игру под названием "Враждебный пользователь", в которой игроки состязаются с замысловатым и недружественным компьютерным интерфейсом. Теперь вам необходимо написать программу, которая отслеживает ежемесячные объемы продаж этой игры в течение пятилетнего периода. Или, скажем, вам нужно провести инвентаризацию торговых карт героев-хакеров.
Очень скоро вы придете к выводу, что для накопления и обработки информации вам требуется нечто большее, чем простые базовые типы. Язык Си предлагает это нечто большее, а именно — составные типы.
Составные типы - это типы, состоящие из базовых целочисленных типов и типов с плавающей точкой.
Массив, например, может хранить множество значений одного и того же типа. Отдельный вид массива может хранить
строки, которые являются последовательностями символов.
Структуры могут хранить по нескольку значений разных типов. Кроме того, есть еще
указатели, которые представляют собой переменные, сообщающие компьютеру местонахождение данных в памяти.
Все эти составные формы данных цель нашего изучения.
Массивы. Введение
Массив – это группа ячеек памяти одинакового типа, расположенных рядом и имеющих общее имя. Каждая ячейка в группе имеет уникальный номер.
Например, массив может содержать 60 значений типа int
, которые представляют информацию об объемах продаж за 5 лет, 12 значений типа short
, представляющих количество дней в каждом месяце, или 365 значений типа float
, которые указывают ежедневные расходы на питание в течение года. Каждое значение сохраняется в отдельном элементе массива, и компьютер хранит все элементы массива в памяти последовательно — друг за другом.
При работе с массивами необходимо научиться решать три задачи:
• выделять память нужного размера под массив;
• записывать данные в нужную ячейку;
• читать данные из ячейки.
1) Объявление массива
Чтобы использовать массив необходимо его объявить - выделить место в памяти.
При объявлении массива мы должны указать:
• тип значений каждого элемента;
• имя массива;
• количество элементов в массиве.
int A[10], B[20]; // 2 массива на 10 и 20 целых чисел
float C[12]; // массив из 12 вещественных чисел
Общая форма объявления массива
Тип_Элементов имя_Массива[размер_Массива];
Для повышения универсальности программы размер массива лучше определять через константу. В этом случае изменить программу для массива другого размера достаточно легко, необходимо будет только поменять значение этой константы.
#include <iostream>
using namespace std;
main()
{
const int Nmax = 20; // константа, определяющая размер массива
int A[Nmax]; // размер массива задан через константу
...
}
В таблице показаны примеры правильного и неправильного объявления массива.
Правильно |
Неправильно |
int A[20];
|
размер массива указан явно |
int A[];
|
размер массива неизвестен |
const int N = 20;
int A[N];
|
размер массива –
постоянная величина |
int N = 20;
int A[N];
|
размер массива не может быть переменной
|
Иногда необходимо вводить размер массива с клавиатуры. В этом случае в программе нужно заранее выделить в памяти массив наибольшего размера, соответствующее условию задачи. Это очень часто применяется в автоматических системах проверки задач, таких как silvertests.ru.
В этом случае объявление массива можно оформить следующим образом:
#include<iostream>
using namespace std;
main()
{
const int Nmax = 100; // Выделяем место в памяти под максимально возможный размер массива
// (обычно это значение указано в условии задачи).
int A[Nmax], N;
cin >> N; // Рабочее число элементов массива задаем с клавиатуры.
// Это позволяет проверить работу программы на массивах разной длины.
...
}