В программировании часто возникает задача повторения одного и того же действия несколько раз. Для этого обычно используются циклы. Рассмотрим цикл while (пока) на примере нескольких задач.
Задача про сумму чисел от 1 до 100
Вывести на экран все числа от 1 до 100 и их сумму.
Решение
#include <iostream>
using namespace std;
int main()
{
int i, s;
i = 1;
s = 0;
while (i <= 100){
cout << i << " ";
s = s + i;
i = i + 1;
}
cout << s << endl;
return 0;
}
В даннoм примере мы выполняем действия внутри цикла while до тех пор, пока логическое выражение i<=100 истинно.
Важно при написании цикла всегда изменять переменную, которая используется в условии продолжения цикла, так как в противном случае цикл будет выполняться бесконечно долго.
Задача про степень двойки
Найдём наибольшую степень двойки, которая не превосходит 1000.
Решение
#include <iostream>
using namespace std;
int main()
{
int ans = 1;
while (ans * 2 < 1000){
ans = ans * 2;
}
cout << ans;
return 0;
}
Заметим, что если мы напишем в условии выхода из цикла ans<1000, то мы получим первую степень двойки, большую или равную 1000.
Задача про наибольшее число в последовательности
Дана последовательность чисел, необходимо найти самое большое число в последовательности. Признаком завершения последовательности является число 0.
Решение
#include <iostream>
using namespace std;
int main()
{
int x, ma = 0;
cin >> x;
while (x != 0){
if (x > ma){
ma = x;
}
cin >> x;
}
cout << ma << endl;
return 0;
}
Задача про цифры числа
Дано число xx. Необходимо посчитать количество и сумму его цифр.
Решение
#include <iostream>
using namespace std;
int main()
{
int x, cnt = 0, s = 0;
cin >> x;
while (x > 0){
cnt = cnt + 1;
s = s + x % 10;
x = x / 10;
}
cout << cnt << " " << s << endl;
return 0;
}
Заметим, что программа даст неправильный ответ для числа 0 (в его записи присутствует одна цифра). Этот случай нужно рассмотреть отдельно.