Теоретический материал (С++)
Массивы (часть 1)
Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.
Массив — это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый индексом), обращение к элементу массива осуществляется путем указания его индекса. В языке 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]; // Объявление массива (так делать нельзя), лучше вместо такого объявления массива использовать std::vector<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)
Выведите на экран все элементы массива с четными индексами (то есть
A[0]
,A[2]
,A[4]
, ...). - (B) Выведите на экран все четные элементы массива (то есть те элементы, которые являются четными числами).
- (C) Найдите количество положительных элементов в массиве. Программа должна считать массив и вывести единственное число – количество положительных элементов в массиве.
- (D) Дан массив. Найдите количество элементов массива, которые больше предыдущего элемента в этом массиве.
- (E)
Массив содержит только ненулевые числа.
Определите, есть ли в данном массиве два соседних элемента с одинаковыми знаками.
Программа должна вывести
YES
, если есть два числа с одинаковыми знаками иNO
иначе. - (F) Дан массив. Определите, сколько в этом массиве элементов, которые строго больше обоих своих соседей.
- (G) Дан массив. Переставьте элементы массива в обратном порядке без использования дополнительного массива. Программа должна считать массив, поменять порядок его элементов, вывести результат на экран (просто вывести элементы массива в обратном порядке – недостаточно!).
- (H) Переставьте соседние элементы массива (0-й элемент поменять с 1-м, 2-й с 3-м и т.д. Если элементов нечетное число, то последний элемент остается на своем месте)
- (I) Циклически сдвиньте элементы массива вправо (0-й элемент становится 1-м, 1-й становится 2-м, ..., последний становится 0-м, то есть массив {3, 5, 7, 9} превращается в массив {9, 3, 5, 7}).
- (J) Найдите значение наибольшего элемента в массиве.
- (K)
Дан массив, отсортированный по возрастанию (каждый элемент массива не меньше
предыдущего элемента, например,
{1, 2, 2, 3, 3, 3}
). Найдите количество различных чисел в этом массиве.