Раз вы приступаете к задачам, значить вже знаєте що таке цикл 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 думки про "Завдання: Цикл 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 символ * ARGV[]) {
cout <> qt_box;
for (;;)
{
qt_car ++;
cout << "Введите количество ящиков для погрузки в машину №" << qt_car <> temp_box;
коробка = коробка + temp_box;
if (коробка > qt_box)
{
cout << "Столько ящиков на складе нет! Осталось " << qt_box – (коробка – temp_box) << " ящиків. \n";
qt_car–;
коробка = коробка – temp_box;
}
else if (коробка == qt_box)
break;
}
cout << "Все ящики погружены \n";
return 0;
}
Вторую задачу решил с массивами ( пришлось для этого залезть вперед на несколько уроков)
даже одна переменная лишняя получилась 12 строчка лишняя и в циклах везде sum достаточно
Почему не работает условие окончания цикла
for(int i =2; i != 0; Я ++) {
If(i==5) я = 0;
}
NON STOP
Потому что у вас фигня написана как в условии завершения цикла (i != 0 – никогда не нарушится), так и в приращении (там у вас вообще неизвестно что записано).
В загальному, чтобы конкретно ваш код заработал, необходимо I++, заменить на i++, и вместо i = 0, i = -1;
Хотя я представить не могу, как это может пригодиться.
Во второй задаче нет защиты от деления на 0. надо добавить условие если число посетителей больше нуля, тогда выполнять все необходимые действия, если нет, то написать что посетителей не было – вкладывайтесь в рекламу))