[Диск]
while ( 1 )
{
/* Ввод значения */
cout << "Введите значение" ;
cin >> inputVal ;
/* Если число отрицательное */
if ( inputVal < 0 )
{
/* Выводим сообщение об ошибке */
cout << "Не допускается ввод "
<< "отрицательных чисел\n" ;
/* Возвращаемся к началу цикла */
continue ;
}
/* Введено приемлемое значение */
}
_________________
75 стр. Глава 5. Операторы управления программой
►Вложенные команды управления...76
Возвратимся к проблеме перерисовывания экрана монитора. Конечно, некоторые типы структур циклов можно использовать для прорисовки каждого пикселя линии слева направо ( или для евреев и арабов сканирование экрана осуществляется справа налево? ). Но как реализовать повторяющееся перерисовывание каждой сканируемой линии сверху вниз? ( Для австралийских экранов, наверное, снизу вверх? ) Для этого нужно включить цикл, сканирующий пиксели слева направо, внутрь цикла, сканирующего линии сверху вниз.
В случае если команды одного цикла находятся внутри другого, цикл называют вложенным. В качестве примера вы можете модифицировать программу BreakDemo в программу, которая накапливает сумму чисел любого количества последовательностей. В этой программе, названной NestedDemo, во внутреннем цикле суммируются числа, введённые с клавиатуры, пока пользователь не введёт отрицательное значение. Внешний цикл суммирует полученные суммы значений последовательностей до тех пор, пока накопленная сумма примет отличное от нуля значение.
/* NestedDemo — вводится последовательность чисел. */
/* Числа суммируются, пока пользователь не введёт отрицательное число. Этот процесс будет повторяться, пока общая сумма не станет равной 0. */
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std ;
int main( int argc , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */
cout << "Эта программа суммирует "
<< "последовательности чисел.\n Ввод каждой "
<< "последовательности завершается "
<< "вводом отрицательного числа \n"
<< "Чтобы завершить ввод последовательностей,"
<< "нужно ввести\nдва отрицательных числа подряд\n" ;
/* Внешний цикл работает с последовательностями чисел */
int accumulator ;
do
{
/* Начинаем ввод очередной последовательности чисел */
accumulator = 0 ;
cout << "\nВведите очередную последовательность\n" ;
/* Бесконечный цикл */
for ( ; ; )
{
/* Введение очередного числа */
int value = 0 ;
cout << "Введите очередное число: " ;
cin >> value ;
/* Если оно отрицательное... */
if ( value < 0 )
{
/* ...выходим из цикла */
_________________
76 стр. Часть 1. Первое знакомство с С++
break ;
}
/* ...иначе добавляем число к общей сумме */
accumulator = accumulator + value ;