5.6. Инструкция whileСинтаксис инструкции while следующий: while ( условие ) инструкция Пока значением условия является true, инструкция выполняется в такой последовательности:
Условием может быть любое выражение: bool quit = false; // ... while ( ! quit ) { // ... quit = do_something(); } string word; while ( cin >> word ){ ... } или объявление с инициализацией: while ( symbol *ptr = search( name )) { // что-то сделать } В последнем случае ptr видим только в блоке, соответствующем инструкции while,
как это было и для инструкций for и switch. int sumit( int *parray_begin, int *parray_end ) { int sum = 0; if ( ! parray_begin || ! parray_end ) int ia[6] = { 0, 1, 2, 3, 4, 5 }; int main() { int sum = sumit( &ia[0], &ia[ 6 ] ); // ... } Для того чтобы функция sumit() выполнялась правильно, оба указателя должны адресовать элементы одного и того же массива (parray_end может указывать на элемент, следующий за последним). В противном случае sumit() будет возвращать бессмысленную величину. Увы, С++ не гарантирует, что два указателя адресуют один и тот же массив. Как мы увидим в главе 12, стандартные универсальные алгоритмы реализованы подобным же образом, они принимают параметрами указатели на первый и последний элементы массива. Упражнение 5.11Какие ошибки допущены в следующих циклах while: (a) string bufString, word; while ( cin >> bufString >> word ) // ... (b) while ( vector<int>::iterator iter != ivec.end() ) // ... (c) while ( ptr = 0 ) ptr = find_a_value(); (d) while ( bool status = find( word )) { word = get_next_word(); if ( word.empty() ) break; // ... } if ( ! status ) cout << "Слов не найдено\n"; Упражнение 5.12while обычно применяется для циклов, выполняющихся, пока некоторое условие истинно, например, читать следующее значение, пока не будет достигнут конец файла. for обычно рассматривается как пошаговый цикл: индекс пробегает по определенному диапазону значений. Напишите по одному типичному примеру for и while, а затем измените их, используя цикл другого типа. Если бы вам нужно было выбрать для постоянной работы только один из этих типов, какой бы вы выбрали? Почему? Упражнение 5.13Напишите функцию, читающую последовательность строк из стандартного ввода до тех пор, пока одно и то же слово не встретится два раза подряд либо все слова не будут обработаны. Для чтения слов используйте while; при обнаружении повтора слова завершите цикл с помощью инструкции break. Если повторяющееся слово найдено, напечатайте его. В противном случае напечатайте сообщение о том, что слова не повторялись. Назад ВпередСодержание |
Нет комментариев. Оставить комментарий: |