Раз вы приступаете к задачам, значит уже знаете что такое цикл for. Рассмотрим несколько задач, в решении которых он применяется и, тем самым, закрепим полученные знания. Практика программирования – самый лучший способ разобраться с материалом и запомнить информацию надолго.
1. Написать программу, которая будет показывать на экран квадрат числа, введенного пользователем. Пользователь должен сам решать – выйти из программы или продолжить ввод. (Подсказка – необходимо запустить бесконечный цикл, в котором предусмотреть его прерывание, при наступлении определённого условия).
Показать код
Задача: оператор for 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
usingnamespacestd;
intmain()
{
setlocale(LC_ALL,"rus");
intdigit=0;// число для расчета
charexit='y';// для выхода или продолжения
for(;;)
{
cout<<"Введите число: ";
cin>>digit;
cout<<"Квадрат "<<digit<<" = "<<digit*digit;
cout<<"\nПродолжить ввод чисел - Y, Выйти - N: ";
cin>>exit;// выбор пользователя
if(exit!='y'&&exit!='Y')
break;// прервать цикл
}
return0;
}
В задаче, как видите, предусмотрено продолжение работы, вне зависимости в каком регистре введена буква Y (в нижнем или в верхнем).
Результат:
2. В спортзал ежедневно приходит какое-то количество посетителей. Необходимо предложить пользователю ввести такие данные: сколько человек посетило спортзал за день, ввести возраст каждого посетителя и в итоге показать возраст самого старшего и самого молодого из них, а так же посчитать средний возраст посетителей.
Показать код
Задача: оператор for 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
usingnamespacestd;
intmain()
{
setlocale(LC_ALL,"rus");
intage=0;// будет вводить пользователь
intmaxAge=0;// для записи максимального количества лет
intminAge=100;// для записи минимального количества лет
intsum=0;// общая сумма для расчета среднего
intaverage=0;// для записи среднего возраста посетителей
intamount=0;// количество посетителей спортзала
cout<<"Введите количество посетителей спортзала: ";
cin>>amount;
for(inti=0;i<amount;i++)
{
cout<<"Введите возраст "<<i+1<<"-го посетителя: ";// запрос на введение числа
cin>>age;
if(age>maxAge)// если оно больше, чем хранит переменная max
maxAge=age;// записываем в неё это число
if(age<minAge)
minAge=age;
sum+=age;// накопление общей суммы
}
average=sum/amount;// подсчет среднего возраста
cout<<"\nСредний возраст всех посетителей: "<<average<<endl;
cout<<"\nСамый взрослый: "<<maxAge<<endl;
cout<<"\nСамый молодой: "<<minAge<<endl;
return0;
}
Переменную min мы инициализировали значением 100, чтобы программа могла корректно работать. Если бы она была инициализирована значением 0, условие if (age < minAge) не выполнялось бы никогда, так как age всегда больше 0. Таким образом значение переменной minAge всегда оставалось бы нулем.
Результат:
Для самостоятельно задания, предлагаем вам решить похожую задачу. Организовать ввод количества посетителей спортзала и количества часов проведенных каждым из них в спортзале. В итоге посчитать и показать общую сумму, которую посетители заплатили за тренировки.
3. На складе имеется определённое количество ящиков с яблоками (в нашем примере 15). Когда подъезжает машина для погрузки, попросить пользователя ввести, сколько ящиков загрузить в первую машину, во вторую и так далее, пока не закончатся ящики с яблоками. Предусмотреть тот случай, когда пользователь введёт количество ящиков больше, чем есть на складе.
Показать код
Задача: оператор for 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
usingnamespacestd;
intmain()
{
setlocale(LC_ALL,"rus");
intboxWithApples=15;// количество ящиков на складе
intamountBoxesForSale=0;// количество отгружаемых ящиков
cout<<"Сейчас на складе "<<boxWithApples<<" ящиков с яблоками.\n\n";
for(inti=1;;i++)// счетчик i будет считать количество машин к погрузке
{
cout<<"Сколько ящиков загрузить в "<<i<<"-ю машину? ";
cin>>amountBoxesForSale;
if(amountBoxesForSale>boxWithApples)
{
cout<<"\nНа складе недостаточно товара!";
cout<<"Осталось только "<<boxWithApples<<" ящиков\n\n";
i--;// уменьшить счетчик на единицу
}
else
{
boxWithApples-=amountBoxesForSale;// перезаписываем значение
cout<<"Осталось "<<boxWithApples<<" ящиков.\n";
}
if(boxWithApples==0)// если ящиков больше нет - выйти из цикла
{
cout<<"Яблоки закончились! Давай до свидания!\n";
break;
}
}
return0;
}
Счетчик i в строке 21 уменьшается на единицу, чтобы при следующем шаге цикла показать правильный порядковый номер машины.
Результат:
При возникновении вопросов обращайтесь к нам в комментариях.
Бесконечный цикл можно записать и так: while( true ) { ... break; ... }
Ты запускаешь бесконечный цикл. Выглядит он так: for(;;){ // блок кода } В принципе можно и while(){} цикл использовать, так даже на несколько строк меньше будет. Просто тут тема такая.
Первую задачу решил спокойно и сразу, а вот над второй долго думал, потом открыл код и все равно ничего не мог понять. Если кто оказался сообразительнее пожалуйста объясните вторую задачу.
int main(int argc, char** argv) { int x, y = 0; cout <> x; do { static int i = 1; cout << "How many boxes put in " << i <> y; if ((x-y) < 0) { cout << "WTF!?!? Boxes are out, put less boxes\nOn warehouse " << x << " boxes\n"; } else { x = x – y; ++i; } } while(x != 0); return 0; }
Зачем нам присваивать каждой переменной “0”? Решая 2-ую задачу не присваивая переменным значение 0 получалась ересь при подсчете среднего числа , почему так происходит ?
#include using namespace std; int main() { setlocale(LC_ALL, “rus”); int yash=15; int pogr; int sum; cout<<"На складе "<<yash<<" ящиков.\n"; for(int i=1;sum<yash;i++) { cout<<"Приехала "<<i<>pogr; sum+=pogr; if(sum>15) { cout<<"У нас нет столько ящиков.\n"; sum=sum-pogr; i=i-1; } } cout<<"\nВсё, ящики кончились, давайте по домам!";
Кароч опять обрезало
В первом задачке, зачем Цикл for ?
а как ты сделал?
потому что нужен, без него мы не сможем запустить бесконечный цикл, break не будет работать, но это не точно, я так думаю
Бесконечный цикл можно записать и так:
while( true ) {
...
break;
...
}
Ты запускаешь бесконечный цикл. Выглядит он так:
for(;;){
// блок кода
}
В принципе можно и while(){} цикл использовать, так даже на несколько строк меньше будет. Просто тут тема такая.
потому, что задачи на тему “Цикл for”!!!
Первую задачу решил спокойно и сразу, а вот над второй долго думал, потом открыл код и все равно ничего не мог понять. Если кто оказался сообразительнее пожалуйста объясните вторую задачу.
#include
using namespace std;
int main(int argc, char** argv)
{
int x, y = 0;
cout <> x;
do
{
static int i = 1;
cout << "How many boxes put in " << i <> y;
if ((x-y) < 0)
{
cout << "WTF!?!? Boxes are out, put less boxes\nOn warehouse " << x << " boxes\n";
}
else
{
x = x – y;
++i;
}
}
while(x != 0);
return 0;
}
>_<. cout x.
Зачем нам присваивать каждой переменной “0”? Решая 2-ую задачу не присваивая переменным значение 0 получалась ересь при подсчете среднего числа , почему так происходит ?
мой код к третьей задачи
#include “stdafx.h”
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “ru”);
int a = 15, n, sum = 0, count = 1;
for (;;)
{
cout << "сколько ящиков загрузить в " << count <> n;
sum += n;
count++;
if (n > a)
cout << "введённая сумма больше кол-во яблок!" << endl;
if (sum == a)
{
cout << "ящики закончились!" < a)
{
cout << "ошибка! вы использовали больше ящиков чем есть. кол-во ящиков = " << a << endl;
break;
}
}
return 0;
}
кое-что по обрезало, но суть думаю ясна
Задача с ящиками
#include
using namespace std;
int main()
{
int nBox = 0;//Ящики вводимые пользователем
int nMaxBox = 15;//Количество ящиков на складе
for (; nMaxBox != 0;)
{
cout << "Max box to warehouse is " << nMaxBox << "."<< endl;
cout <> nBox;
if (nBox <= nMaxBox)
{
nMaxBox = nMaxBox – nBox;
} else {cout << "To many box. The max box is " << nMaxBox << ". Pleas, entered agane." << endl;}
}
cout << "\n The warehouse is empty." << endl;
return 0;
}
cout nBox; – тут cin >> nBox;
Третья задача попроще:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int yash=15;
int pogr;
int sum;
cout<<"На складе "<<yash<<" ящиков.\n";
for(int i=1;sum<yash;i++)
{
cout<<"Приехала "<<i<>pogr;
sum+=pogr;
if(sum>15)
{
cout<<"У нас нет столько ящиков.\n";
sum=sum-pogr;
i=i-1;
}
}
cout<<"\nВсё, ящики кончились, давайте по домам!";
return 0;
}