Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Языки программирования (пособие).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
965 Кб
Скачать
☆

2.4.3Работа с массивом заранее неизвестного размера

Довольно часто размер массива, который планируется использовать в программе, неизвестен. Например, требуется ввести размер массива с клавиатуры, заполнить его случайными числами и вывести на экран. Очевидное решение

cout << "Введите размер массива:\n";

cin >> size;

int numbers[size];

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

//Массив может хранить не более 100 элементов

int numbers[100];

//Вводим размер массива с клавиатуры

int size;

cout << "Введите размер массива < 100:\n";

cin >> size;

//Заполняем массив случайными числами

for (int i=0; i<size; i++) {

numbers[i] = rand()%100;

}

//Выводим массив на экран

for (int i=0; i<size; i++) {

cout << numbers[i] << " ";

}

Обратите внимание на то, что память выделена под 100 элементов, но фактически работа производится элементами, количество которых определено переменной size (рис. 8).

Рисунок 8. Ввод размера массива с клавиатуры

2.4.4Сравнение и присваивание массивов

Массивы, в отличие от переменных, нельзя напрямую присвоить или сравнить. Это следует делать поэлементно, и для решения этой задачи лучше всего подходят циклы. Итак, для присвоения массива ages1 массиву ages2 следует использовать такую конструкцию:

for (int i=0; i<size; i++) {

ages2[i] = ages1[i];

}

Сравнение массивов нужно выполнять по аналогичной схеме:

bool equal = true;

for (int i=0; i<size; i++) {

if (ages1[i] != ages2[i]) {

equal = false;

break;

}

}

if (equal) {

cout << "Массивы равны\n";

} else {

cout << "Массивы не равны\n";

}

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

2.4.5Вычисление суммы элементов массива

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

int sum = 0;

for (int i=0; i<size; i++) {

sum += numbers[i];

}

cout << "Сумма равна " << sum;

2.4.6Подсчет количества элементов с нужным свойством

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

int n_elem = 0;

for (int i=0; i<size; i++) {

if (numbers[i]>=100) {

n_elem++;

}

}

cout << n_elem << endl;