Приводимая ниже программа иллюстрирует использование цикла while.
Задание 5-11
// Задание 5_11.cpp: определяет точку входа для консольного приложения.
/* Программа выводит все отображаемые на экране символы,
включая расширенный набор, если он существует
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
unsigned char ch;
ch = 32;
while (ch) {
for (int i = 1; i <= 20; i++)
{
cout << ch << " ";
ch++;
}
cout << "\n";
}
cout << "\n";
return 0;
}
В этом примере для управления циклом используется просто переменная ch. Это возможно, так как переменная объявлена как символ без знака и может содержать значения от 0 до 255. Увеличение последнего значения на 1 приводит к явлению «оборачивания» и ch становится 0, что является признаком завершения цикла (условие ложно).
Как и в случае цикла for, while анализирует условное выражение в начале каждого шага, из чего следует, что тело цикла может не выполниться ни разу.
Приведённая ниже программа выводит линию точек. Программа не допускает вывод строк длиннее 80 символов
Задание 5-12
// 5_12 WHILE.cpp: главный файл проекта.
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
setlocale (LC_ALL,"Russian");
int len;
cout << " Введите длину (от 1 до 79): ";
cin >> len;
while (len > 0 && len < 80) {
cout << ".";
len--;
}
_getch();
|
|
}
Тело цикла while может не содержать ни одного предложения, например:
while ( rand() !=100);
Этот цикл повторяется, пока случайное число, генерируемое функцией rand() , не окажется равным 100.
Цикл do-while
В отличие от циклов for, while, вкоторых условие выполнения анализируется в началекаждого шага,в цикле do- while проверка условия выполняется в конце шага цикла и поэтому цикл do- while всегда выполняется по меньшей мере один раз. Общая форма цикла do- while выглядит так:
do {
предложения;
} while (условие)
Если тело цикла состоит из единственного предложения, в фигурных скобках нет необходимости. Однако они часто используются для повышения наглядности конструкции do- while. Цикл выполняется до тех пор, пока условное выражение истинно.
В следующей программе цикл выполняется, пока пользователь не введёт число 100.
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
setlocale (LC_ALL,"Russian");
int num;
do {
cout << " Введите число (100 для завершения): ";
cin >> num;
} while (num !=100);
_getch();
}
Используя цикл do- while можно выполнить дальнейшее усовершенствование программы «Магическое число». На этот раз программа должна крутиться в цикле пока пользователь не угадает число. Самостоятельно добавьте в ранее составленную программу конструкцию do- while, обеспечивающую это условие.
|
|
Результат пробного прогона программы должен быть следующим:
Введите вашу догадку: 10
Жаль, но вы ошиблись. Ваше число слишком мало.
Введите вашу догадку: 100
Жаль, но вы ошиблись. Ваше число слишком велико.
Введите вашу догадку: 50
Жаль, но вы ошиблись. Ваше число слишком велико.
Введите вашу догадку: 41
***Правильно*** 41 и есть магическое число.
Текст, правильно работающей программы, поместите под заголовок «Задание 5-13».
Задание 5-13
Проект 3-2 Справочная система С++
Следует усовершенствовать проект 3-1, добавив в справочную систему информацию о циклах for, while, do- while. Для этого:
1. Скопируйте файл проекта 3-1 (HELP. cpp)и назовите его HELP 2
2. Измените часть программы, выводящую возможные варианты так, чтобы она использовала цикл do-while:
do {
cout << " Справка по:\n";
cout << " 1. if \n";
cout << " 2. switch \n";
cout << " 3. for \n";
cout << " 4. while \n";
cout << " 5. do-while \n";
cout << " Выберите один из пунктов:";
cin >> choice;
} while (choice < ‘1’ || choice > ‘5’);
|
|
При внесении такого дополнения программа будет крутиться в цикле, выводя меню, до тех пор пока пользователь не введёт число между 1 и 5. Здесь цикл do-while весьма полезен.
3. Расширьте предложения switch, включив в него справки по циклам for, while, do-while.
4. Заметьте, что в этом варианте в предложении switch нет необходимости использовать ветвь default, поскольку цикл вывода меню обеспечивает ввод пользователем только допустимого номера пункта.
Усовершенствованный вариант программы поместите после заголовка
Задание 5-14
Дата добавления: 2019-07-15; просмотров: 184; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!