Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.
Массив — это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый индексом), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.
Массив в языке C++ задается следующим образом:
тип_элементов идентификатор[размер];
где тип_элементов — произвольный тип данных языка C++,
который будут иметь элементы массива, например, int
, double
и т.д.; идентификатор — имя массива, размер — число
элементов в нем.
К элементу массива можно обращаться, как идентификатор[
индекс]
.
Например, если было сделано объявление
double A[5];
то таким образом создается 5 элементов массива типа double
:
A[0]
, A[1]
, A[2]
, A[3]
, A[4]
.
Пример программы, которая создает массив типа int[]
,
заданного пользователем размера,
считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива
число 1
, затем выводит результат на экран:
#include<iostream> using namespace std; int main() { int n; // Размер массива int i; // Счетчик в циклах cout<<"Введите количество чисел: "; cin>>n; // Считываем размер массива int arr[n]; // Объявление массива // Считываем массив cout<<"Введите "<<n<<" целых чисел: "; for(i=0;i<n;++i) cin>>arr[i]; // Прибавляем по 1 к каждому элементу for(i=0;i<n;++i) arr[i]+=1; // Выводим массив на экран for(i=0;i<n;++i) cout<<arr[i]<<" "; // Переведем курсор на новую строку cout<<endl; return 0; }
В этом примере при помощи //
обозначается начало комментария, весь текст
после начала комментария и до конца строки компилятором игнорируется.
Второй способ объявления комментария: в начале комментария поставить
знаки /*
, а в конце – */
. Это позволяет
делать комментарии, занимающие несколько строк. В языке C допустимы только
такие комментарии.
В упражнениях подразумевается, что массив вводится, как в приведенном примере (сначала –
количество элементов в массиве, потом – все элементы массива по одному).
Все массивы – числовые типа int[]
.
A[0]
, A[2]
, A[4]
, ...).
YES
, если есть два числа с одинаковыми знаками
и NO
иначе.
{1, 2, 2, 3, 3, 3}
). Найдите количество различных чисел в этом массиве.
Программа получает на вход число N, затем N элементов массива, затем число k. Программа должна вывести N-1 число – элементы массива после удаления k–го элемента.
Программа должна осуществлять сдвиг непосредственно в массиве, а не делать это при выводе элементов. Также нельзя использовать дополнительный массив.
Например, при вводе
7 7 6 5 4 3 2 1 2
программа должна вывести (элементы массива индексируются с нуля!)
7 6 4 3 2 1
Посколько при этом количество элементов в массиве увеличивается, необходимо сразу же создавать массив размером N+1. Вставку необходимо осуществлять уже в считанном массиве, не оставляя "свободного" места при считывании, не делая этого при выводе и не создавая дополнительного массива.
Например, при вводе
7 7 6 5 4 3 2 1 2 0
программа должна вывести
7 6 0 5 4 3 2 1
Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать.
Например, в массиве 1 2 3 2 3
имеется две равны пары, в массиве 1 1 1
– три пары, а в
массиве 1 1 1 1
– шесть пар.