Раз вы приступаете к задачам, значить вже знаєте що таке цикл 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
48
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";
У другій проблемі немає захисту від поділу за 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; Я ++) {
Якщо(i==5) я = 0;
}
NON STOP
Бо ваша фігня написана як в умові завершення циклу (i != 0 – ніколи не зламається), і з кроком (Ви навіть не знаєте, що там написано).
В загальному, щоб ваш код працював, Потрібен I++, замінити на i++, а замість i = 0, i = -1;
Хоча не уявляю, як це може бути корисним.
У другій проблемі немає захисту від поділу за 0. потрібно додати умову, якщо кількість відвідувачів більше нуля, потім виконати всі необхідні дії, если нет, то пишуть що відвідувачів не було – інвестувати в рекламу))