Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Просмотр массива

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

/*highlow*/

...

high = temps[0];

low = temps[0];

index = 1;

while (index < 31 && temps[index] != 555)

{

if (temps[index] > high)

high = temps[index];

if (temps[index] > low)

low = temps[index];

index++;

}

printf("Минимальное значение равно %d\n", low);

printf("максимальное значение равно %d\n", high);

...

Предполагается, что переменные high и low определены как целочисленные. Здесь описана процедура просмотра каждого элемента массива с целью поиска наибольшего и наименьшего из введенных значений. Ключевым моментом является то, что изначально значение первого элемента массива присваивается и переменной high, и переменной low. Действительно, когда имеется только один элемент, его значение является одновременно и максимальным и минимальным из рассматриваемых. Таким образом, мы даем переменной некое начальное

Рис. 10.5. Значения переменных в процессе выполнения цикла

значение, которое затем будет сравниваться со всеми другими значениями элементов массива. Если значение какого-либо элемента превысит текущее значение переменной high, оно станет новым максимальным значением, если оно окажется меньше текущего значения переменной low, оно станет новым минимальным значением. На рис.10.5 продемонстрировано несколько первых прохождений такого цикла.

Поиск в массиве

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

Ниже написана процедура поиска в нашем учебном массиве значений температур:

/*found.c*/

...

printf("Укажите значение, которое желаете найти: ");

scanf("%d", &num);

index = 0;

found = 0;

while (! found && index < 31 && temps[index] != 555)

{

if (temps[index] == num)

found = 1;

else

index++;

}

if (! found)

puts("Указанного значения нет в массиве");

else

printf("Указанное значение содержится в элементе %d\n", index);

...

Здесь предполагается, что была определена целочисленная переменная found. Эта переменная используется как флаг, то есть указывает на то, что искомое значение найдено и можно прекратить дальнейший просмотр значений массива.

Переменная found используется с унарным оператором отрицания. Выражение

while (! found)

означает: «Пока значение found не является истинным». Эта инструкция выполняется, пока переменная found имеет нулевое значение. Так как начальное значение переменной было присвоено за пределами цикла, при первом прохождении условие окажется истинным, и программа проверит первый элемент массива (имеющий индекс0).

Как только элемент, имеющий искомое значение, обнаружен, условие, записанное в инструкции if, становится истинным и переменной found присваивается значение1. Это означает, что условие «Пока значение found не является истинным» больше не будет выполняться, и цикл завершается. Значение, присвоенное переменной index во время последнего прохождения цикла, соответствует номеру элемента массива, который содержит искомое значение.

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

Обратите внимание, что инструкция while содержит три условия, объединенные логическим оператором И. Цикл будет повторяться до тех пор, пока не произойдет одно из трех событий: найдено искомое значение, проверены все элементы массива или обнаружен элемент, имеющий значение555.