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

Вложенные циклы do

Вложенные циклы do...while можно использовать для того, чтобы обеспечить несколько уровней повторов. Можно, например, использовать внешний цикл, чтобы повторять всю программу, пока пользователь не решит заняться чем-нибудь другим, и одновременно внутренний цикл для проверки правильности ввода, как это показано на рис.9.8. Внутренний цикл используют для ввода чисел, значения которых должны изменяться в промежутке от 0 до 100. Если ввод данных соответствует этому условию, внутренний цикл завершается и выполняются инструкции внешнего цикла. Выполнение внешнего цикла повторяется, пока является истинным условие

while (repeat == 'y' || repeat == 'Y');

Как только пользователь вводит какой-нибудь другой символ, внешний цикл завершается, приводя тем самым к завершению всей программы.

Использование цикла while

Цикл while используется в том случае, когда не известно точное число повторов и при этом нет необходимости, чтобы цикл непременно был выполнен хотя бы один раз. Структура цикла while такова:

while (condition)

instruction;

Синтаксис показан на рис.9.9. Составные инструкции записываются следующим образом:

while (condition)

{

instructions;

}

Рис. 9.9. Структура цикла while

Так же, как и цикл do, цикл while выполняется до тех пор, пока является истинным условие, но в отличие от конструкции do...while, условие проверяется до начала выполнения цикла, даже если цикл выполняется первый раз. Если условие окажется ложным, цикл не будет выполнен ни разу.

Используя цикл для проверки правильности ввода, помещайте первую инструкцию ввода вне цикла. После этого можно продолжать запрос о вводе данных до тех пор, пока не будет введено правильное значение. Например, таким образом:Так же, как и цикл do, цикл while выполняется до тех пор, пока является истинным условие, но в отличие от конструкции do...while, условие проверяется до начала выполнения цикла, даже если цикл выполняется первый раз. Если условие окажется ложным, цикл не будет выполнен ни разу.

printf("Введите размер скидки: ");

scanf("%f", &discount);

while (discount < 0 || discount >= 1)

{

printf("Вы ввели неправильное значение");

scanf("%f", &discount);

}

Комбинирование циклов разных типов

В программе можно использовать любые комбинации вложенных циклов всех типов: while, for и do...while, если этого требует логика построения программы. В приведенной ниже программе, например, используется цикл while, вложенный внутрь цикла for. В программе осуществляется преобразование десяти значений температуры, находящихся в пределах от 0 до 100. Значения вводятся с клавиатуры.

/*mixed.c*/

main()

{

int temp, count;

float celsius;

for (count = 1; count <= 10; count++)

{

printf("Введите значение температуры в пределах от 1 до 100: ");

scanf("%d", &temp);

while (temp < 0 || temp > 100)

{

printf("Ошибка, повторите ввод: ");

scanf("%d", &temp);

}

celsius = (5.0 / 9.0) * (temp - 32);

printf("%d градусов по Фаренгейту соответствует %6.2f по Цельсию\n", temp, celsius);

}

}

Внешний цикл for повторяется ровно 10 раз. Внутренний цикл будет повторяться до тех пор, пока пользователь не введет правильные данные.