Раз вы приступаете к задачам, значит уже знаете что такое цикл 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 уменьшается на единицу, чтобы при следующем шаге цикла показать правильный порядковый номер машины.
Результат:
При возникновении вопросов обращайтесь к нам в комментариях.
4.4
47
161 thoughts on “Задачи: Цикл for в С++”
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
intmain()
\\задача3
{
setlocale(LC_ALL,"rus");
inti_box_apple=15;
inti_skol_zabr;
inti=1;
cout<<"На складе: "<<i_box_apple<<" коробок.";
do{
cout<<"\n\nПодъехала машина № "<<i++<>i_skol_zabr;
if(i_skol_zabr>0&&i_skol_zabr<=i_box_apple)
{
i_box_apple-=i_skol_zabr;
cout<<"\nОсталось:"<<i_box_apple<<" коробок.\n";
}
elseif(i_box_apple<i_skol_zabr)
{
cout<<"\nНа складе не хватает товара, осталось: "<<i_box_apple<<" коробок!\n";
Потому что у вас фигня написана как в условии завершения цикла (i != 0 – никогда не нарушится), так и в приращении (там у вас вообще неизвестно что записано).
Во второй задаче нет защиты от деления на 0. надо добавить условие если число посетителей больше нуля, тогда выполнять все необходимые действия, если нет, то написать что посетителей не было – вкладывайтесь в рекламу))
#include
using namespace std;
int main(int argc, const char * argv[]) {
cout <> qt_box;
for (;;)
{
qt_car++;
cout << "Введите количество ящиков для погрузки в машину №" << qt_car <> temp_box;
box = box + temp_box;
if (box > qt_box)
{
cout << "Столько ящиков на складе нет! Осталось " << qt_box – (box – temp_box) << " ящиков. \n";
qt_car–;
box = box – temp_box;
}
else if (box == qt_box)
break;
}
cout << "Все ящики погружены \n";
return 0;
}
Вторую задачу решил с массивами ( пришлось для этого залезть вперед на несколько уроков)
даже одна переменная лишняя получилась 12 строчка лишняя и в циклах везде sum достаточно
Почему не работает условие окончания цикла
for(int i =2; i !=0; I++) {
If(i==5) i=0;
}
NON STOP
Потому что у вас фигня написана как в условии завершения цикла (i != 0 – никогда не нарушится), так и в приращении (там у вас вообще неизвестно что записано).
В общем, чтобы конкретно ваш код заработал, необходимо I++, заменить на i++, и вместо i = 0, i = -1;
Хотя я представить не могу, как это может пригодиться.
Во второй задаче нет защиты от деления на 0. надо добавить условие если число посетителей больше нуля, тогда выполнять все необходимые действия, если нет, то написать что посетителей не было – вкладывайтесь в рекламу))