Раз вы приступаете к задачам, значить вже знаєте що таке цикл 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 в С ”
хлопців!Будь ласка, допоможіть із завданням про спортсменів з годинником! Я не можу підсумувати загальну оплату всіх спортсменів
#include using namespace std;
int main() { setlocale(LC_ALL, "rus"); int visitors = 0; int number_for_hours = 0; int money = 100; int sum;
Ти трохи поплутав cin і cout. )) І ще деякі моменти не врахував. Дивись код:
#include using namespace std;
int main() { setlocale(LC_ALL, "rus"); int visitors = 0; int number_for_hours = 0; // для ввода часов каждого посетителя int final_hours = 0; // счетчик для накопления общего кол-ва часов int money = 100; int sum; cout < < "Введите кол-во посетителей за день: ";
cin >> visitors; // ввод кол-ва посетителей
for (int i = 0; i < visitors; i++)
{
cout << i + 1 << "-й посетитель провел в спортзале (часов): ";
cin >> number_for_hours; final_hours += number_for_hours; //cout < < "Оплата " << i + 1 << " посетителя: " << number_for_hours*money << endl;
// благодаря счетчику final_hours - єта строка не нужна
// посчитаем ниже
} sum = final_hours * money;
cout << "Всего оплата: " << sum << endl; return 0;
}
Можна написати і i = 1 (з рівним успіхом) … як і будь-яке інше значення.
У мові C / C ++ використання нульового початкового значення для циклу for є, швидше, традицією, звичкою програмістів. Это связано с тем, що індексація масивів починається з 0, а цикл for в більшості випадків (найчастіше) використовується для переміщення по масиву.
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251);
int size; INT TMP; int min = 0; int max = 0; INT середній; int count = 0;
cout <> size; cout << endl; if (size <= 0) cout << "Ошибка количество поситетелей не может быть равна нулю или меньше нуля" << endl; else { for (int i = 0; i < size; i ) { cout << "Введите возраст " << i + 1 <> tmp; if (TMP макс || !max) макс = TMP; кол + = TMP; } cout << endl;
if (розмір == 1) cout << "Сегодня был всего один посетитель его возраст был " << min << " лет" << endl; else { cout << "Спорт зал сегодня посетило: " << size << " відвідувача" << endl; cout << "Самому младшему посетителю " << min << " лет" << endl; cout << "Самому старшему посетителю " << max << " лет" << endl; cout << "Средний возраст посетителей " << count / size << " лет" << endl; } }
Підкажіть будь ласка чи можна ось так вирішити задачу з оплатою занять в спортзалі? #include;
using namespace std;
int main() { setlocale(LC_ALL, ".1251");
int i = 0; int AllPeople = 0; int money = 10; int hour = 0; int SumMoney = 0; int SumHour = 0;
cout <> AllPeople;
for (i = 0; i < AllPeople; i++) { cout << "\nВведите количество проведенных в спортзале часов для " << i + 1 <> hour; } SumHour = AllPeople*hour; SumMoney = money*SumHour;
cout << "\nОбщее время тренировок равно " << SumHour <<endl; cout << "\nОбщая сумма за все тренировки посетителей равна " << SumMoney << "$" << endl;
З приводу другого завдання – я в цикл for додав 3-її умова. Якщо i дорівнює 0, то minAge привласнити age. При цьому minAge инициализируется у мене числом 0, а не 100. Це зроблено потім, що не зрозуміло звідки береться магічне число 100. А якщо людині, скажем, 105 лет? Адже є люди, живуть більше 100 лет. З таким числом при вашому підході умова не буде виконуватися. Наскільки довго повинні жити люди судячи програмі – інше питання. Можна загугли вік самого долгоживущего і поставити його вік як межа.
хлопців!Будь ласка, допоможіть із завданням про спортсменів з годинником! Я не можу підсумувати загальну оплату всіх спортсменів
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int visitors = 0;
int number_for_hours = 0;
int money = 100;
int sum;
cout << visitors;
for (int i = 0; i < visitors; i++)
{
cout << i + 1 << number_for_hours;
cout << endl;
cout << "Оплата " << i + 1 << " посетителя: " << number_for_hours*money<<endl;
}
sum = number_for_hours*money;
sum += sum;
cout << "Всего оплата: " << sum;
_getchar_nolock();
_getchar_nolock();
return 0;
}
Ти трохи поплутав cin і cout. ))
І ще деякі моменти не врахував. Дивись код:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int visitors = 0;
int number_for_hours = 0; // для ввода часов каждого посетителя
int final_hours = 0; // счетчик для накопления общего кол-ва часов
int money = 100;
int sum;
cout < < "Введите кол-во посетителей за день: "; cin >> visitors; // ввод кол-ва посетителей
for (int i = 0; i < visitors; i++) { cout << i + 1 << "-й посетитель провел в спортзале (часов): "; cin >> number_for_hours;
final_hours += number_for_hours;
//cout < < "Оплата " << i + 1 << " посетителя: " << number_for_hours*money << endl; // благодаря счетчику final_hours - єта строка не нужна // посчитаем ниже } sum = final_hours * money; cout << "Всего оплата: " << sum << endl; return 0; }
Тепер зрозумів) велике дякую!!!)))
Навіщо ініціювати i нулем? чи не простіше написати i = 1? Стосується і перший приклад в уроці
Можна написати і i = 1 (з рівним успіхом) … як і будь-яке інше значення.
У мові C / C ++ використання нульового початкового значення для циклу for є, швидше, традицією, звичкою програмістів.
Это связано с тем, що індексація масивів починається з 0, а цикл for в більшості випадків (найчастіше) використовується для переміщення по масиву.
Щоб очистити про всяк випадок змінну))
#include
#include
using namespace std;
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int size;
INT TMP;
int min = 0;
int max = 0;
INT середній;
int count = 0;
cout <> size;
cout << endl;
if (size <= 0) cout << "Ошибка количество поситетелей не может быть равна нулю или меньше нуля" << endl;
else {
for (int i = 0; i < size; i ) {
cout << "Введите возраст " << i + 1 <> tmp;
if (TMP макс || !max) макс = TMP;
кол + = TMP;
}
cout << endl;
if (розмір == 1) cout << "Сегодня был всего один посетитель его возраст был " << min << " лет" << endl;
else {
cout << "Спорт зал сегодня посетило: " << size << " відвідувача" << endl;
cout << "Самому младшему посетителю " << min << " лет" << endl;
cout << "Самому старшему посетителю " << max << " лет" << endl;
cout << "Средний возраст посетителей " << count / size << " лет" << endl;
}
}
return 0;
}
Підкажіть будь ласка чи можна ось так вирішити задачу з оплатою занять в спортзалі?
#include;
using namespace std;
int main()
{
setlocale(LC_ALL, ".1251");
int i = 0;
int AllPeople = 0;
int money = 10;
int hour = 0;
int SumMoney = 0;
int SumHour = 0;
cout <> AllPeople;
for (i = 0; i < AllPeople; i++)
{
cout << "\nВведите количество проведенных в спортзале часов для " << i + 1 <> hour;
}
SumHour = AllPeople*hour;
SumMoney = money*SumHour;
cout << "\nОбщее время тренировок равно " << SumHour <<endl;
cout << "\nОбщая сумма за все тренировки посетителей равна " << SumMoney << "$" << endl;
system("PAUSE");
return 0;
}
з 10 рядків скоротив ваш код до 3 завданню)
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int boxes(0);
int amount;
cout < 0; boxes -= amount, i++) {
cout << "\nСколько ящиков погрузить в " << i + 1 <> amount;
if (boxes > amount)
cout << "Осталось коробок: " << boxes - amount < boxes) {
cout << "Недопустимое количество. Введите еще раз\n";
cout << "Сколько ящиков погрузить в " << i+1 <> amount;
cout << "Осталось коробок: " << boxes - amount << endl;
}
};
if (boxes == 0)
cout << "\nKоробки закончились!\n\n";
system("pause");
return 0;
}
перепрошую, перший раз як то невдало скопіював(
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int boxes(0);
int amount;
cout < 0; boxes -= amount, i++) {
cout << "\nСколько ящиков погрузить в " << i + 1 <> amount;
if (boxes > amount)
cout << "Осталось коробок: " << boxes - amount < boxes) {
cout << "Недопустимое количество. Введите еще раз\n";
cout << "Сколько ящиков погрузить в " << i+1 <> amount;
cout << "Осталось коробок: " << boxes - amount << endl;
}
};
if (boxes == 0)
cout << "\nKоробки закончились!\n\n";
system("pause");
return 0;
}
З приводу другого завдання – я в цикл for додав 3-її умова. Якщо i дорівнює 0, то minAge привласнити age. При цьому minAge инициализируется у мене числом 0, а не 100. Це зроблено потім, що не зрозуміло звідки береться магічне число 100. А якщо людині, скажем, 105 лет? Адже є люди, живуть більше 100 лет. З таким числом при вашому підході умова не буде виконуватися. Наскільки довго повинні жити люди судячи програмі – інше питання. Можна загугли вік самого долгоживущего і поставити його вік як межа.
після повтору в програмі не виходячи з неї не обнуляється змінна як мені здається coast як її обнулити ?