
- •Разработка программы нахождения максимального или минимального элементов в массиве
- •Основные операции, операторы ветвления и циклов
- •Арифметические выражения
- •Логические выражения
- •Приоритеты (порядок) выполнения операций
- •Порядок вычислений
- •Выбор вариантов
- •Условные операторы
- •Оператор ветвления (проверки условия) if
- •If (выражение1)
- •If (выражение2)
- •Операция условия
- •Выражение1 ? выражение2 : выражение3
- •Множественный выбор: оператор switch
- •Операторы циклов
- •Оператор цикла while
- •Оператор цикла for
- •Оператор цикла do while
- •Вложенные циклы
- •Другие управляющие операторы
- •Оператор break
- •Оператор continue
- •Оператор goto
- •Организация ввода элементов массивов
- •Задача поиска минимального (максимального) значения
-
Оператор continue
Оператор continue может использоваться в любой из трех форм цикла, но не в операторе switch. Его выполнение приводит к такому изменению логики программы, что остальные операторы тела цикла пропускаются. Для циклов for или while вслед за этим начинается новый шаг, а для цикла do while проверяется условие на выходе, и затем, если оно оказывается истинным, выполняется следующая итерация.
Пример:
for ( i=0; i<n; i++)
{
if ( i==j ) continue;
x[i] = i*i;
a = a + x[i]*3;
}
Здесь в теле цикла по параметру i проверяется условие равенства значения i значению переменной j, и в случае истинности проверки остальные два оператора тела цикла пропускаются.
-
Оператор goto
Выполнение оператора goto вызывает передачу управления в программе оператору, помеченному указанной меткой. Для отделения оператора от соответствующей ему метки используется двоеточие. Имена меток образуются по тем же правилам, что и имена переменных. Помеченный оператор может появиться в тексте программы до или после goto.
Пример:
mm: printf("Введите количество строк матрицы (от 1 до 10): ");
scanf("%d",&n);
if ( n<1 || n>10 ) {printf("Неверно! Еще раз!\n"); goto mm;}
В приведенном примере в том случае, когда введено "плохое" значение переменной n, выдается сообщение, и управление опять передается на вывод приглашения к вводу значения.
Не стоит употреблять оператор goto, если на это нет веских причин, т.к. это, во-первых, может привести к ошибкам в ходе выполнения, если вы перепутаете метки, а во-вторых, портит структуру вашей программы. Н а самом деле можно привести еще много причин, но ограничимся пока этими двумя.
-
Организация ввода элементов массивов
Не забывайте, что в качестве индекса элемента массива можно использовать не только целые константы, но и переменные целого типа. Допустим, имеется массив, описанный как float a[20][30], в который значения надо ввести с клавиатуры. Так как при вводе надо обратиться к КАЖДОМУ элементу массива, т.е. перебрать все сочетания номеров строк и номеров столбцов, то можно организовать ввод, используя вложенные циклы:
for ( i=0; i<20; i++ )
for ( j=0; j<30; j++ )
scanf("%f", &a[i][j]);
Если в текущий момент необходимо обрабатывать не все 20 строк, а n (где n20), то нужно использовать эту переменную (не забудьте её предварительно задать – с помощью оператора присваивания или использовав функцию ввода):
for ( i=0; i<n; i++ )
for ( j=0; j<30; j++ )
scanf("%f", &a[i][j]);
и т.д.
-
Задача поиска минимального (максимального) значения
Задача поиска минимального элемента из числового ряда может быть решена с помощью описанных выше операторов. С этой целью можно ввести дополнительную переменную, которой присваивается значение первого элемента числового ряда. Затем, сравнивая последовательно значение этой переменной со значением всех элементов числового ряда, находят минимальный элемент (рисунок 9).
Рисунок 9 – Блок-схема поиска минимального элемента
Пример (здесь приведен поиск минимального значения в целочисленном одномерном массиве d из 10 элементов):
int d[10], i, smin;
...
smin = d[0];
i = 1;
while( i<10 )
{
if( smin > d[i] )
{
smin = d[i];
}
i++;
}
...
Или другой вариант реализации данного алгоритма:
int d[10], i, smin;
...
smin = d[0];
for(i=1; i<10; i++)
{
if( smin > d[i] )
{
smin = d[i];
}
}
...