Раз вы приступаете к задачам, значить вже знаєте що таке цикл 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
26
27
28
29
30
31
32
33
34
35
#include
usingnamespacestd;
intmain()
{
intappleWarehouse=0;
inttruck=0;
intapple=0;
boolexit;
cout<>appleWarehouse;
for(inti(0);i<appleWarehouse;)
{
cout<<"how many apple put into "<<truck+1<>apple;
exit=true;
while(exit)
{
if(apple>appleWarehouse)
{
cout<<"warehouse have "<<appleWarehouse<<" apples, not more."<<endl;
cout<<"\nhow many apple put into "<<truck+1<>apple;
}
else
{
exit=false;
}
}
truck++;
appleWarehouse-=apple;
}
cout<<endl<<truck<<" trucks needed that take all apple in the warehouse!"<<endl;
використовуючи зЬй::cout; використовуючи зЬй::cin; використовуючи зЬй::endl;
int main() { setlocale(LC_ALL, “російський”);
INT B = 15; INT C;
cout << "Количество ящиков на складе: " << b << endl < 0; i – c) { if (b > 0) { cout << "Подъехала машина. Сколько ящиков в неё погрузить?" <> c; if (b – c >= 0) { cout << "Остаток ящиков на складе " << b – c << endl << endl; B = B – c; } else if (b – c < 0) cout << "Количество ящиков на складе: " << b << ". Введите меньшее количество." << endl << endl; } if (б == 0) { cout << "Склад пуст."; break; } }
Вот можно же в цикле for оставить пустые скобки (;;)? А если пропустить только условие повторения? Почему у меня не инкрементируется i? Постоянно выдаёт “2 в степени 2 = 4″(разумеется если вводить 2).
#include #include #include
використовуючи зЬй::cout; використовуючи зЬй::cin; використовуючи зЬй::endl;
int main() { setlocale(LC_ALL, “російський”);
int a; INT C;
cout <> a;
for (int i = 2;; i ) { int r (0);
if (i = 2) г = а * a; if (i != 2) г = г * a;
cout << a << " в степени " << i << " = " << R << endl; cout <> c; if (з == 0) break; i ; }
у мене якось так вийшло
після виходу BOOL; і до циклу ці дві строчки. мабуть щось стер випадково
якісь баги. два рази вже не поулчается відправити код
коротше після булевої змінної і до циклу ці два рядки:
cout <> appleWarehouse;
Не додає хоч убийте. навіть без тегів. у вас якісь баги на сайті.
перший рядок це висновок, який запитує скільки яблук лежить на складі,а другий рядок це введення цих самих яблук. чому код сайт не їсть – не знаю
#include
using namespace std;
int main()
{
while (1)
{
setlocale(LC_ALL, “rus”);
int i = 0; // объявление и инициализация управляющей переменной
символ J = «Y»,;
INT з = 0;
cout << "\nВыберите программу\n";
cout <> c;
if (з == 1)
{
for (;;) // запуск бесконечного цикла
{
cout <> i;
cout << "\nЧисло в квадрате=" << і * і << endl;
cout <> j;
if (j != «Y’ && j != «А»)
break;
}
}
else if (з == 2)
{
for (;;) // запуск бесконечного цикла
{
int a;
cout <> i;
cout <> a;
if (A == я * I)
cout << "\nОтвет верен\n";
else cout << "\nОтвет не верен\nПравильный ответ=" << і * і;
cout <> j;
if (j != «Y’ && j != «А»)
break;
}
}
else
return 0;
}
}
Рішення 1й завдання, використовуючи цикл while
#include
#include
using namespace std;
/* запустити цю програму за допомогою консолі pauser або додати свій власний Геч, system(“пауза”) або вхідний контур */
int main(INT ARGC, символ ** ARGV) {
cout << "type 1337 на кінець програмою." << endl;
int exit = 1337;
int a;
ІНТ SQRT;
cout <> a;
while (a!= вихід)
{
SQRT = а * а;
cout << a << " * " << a << " = " << SQRT << endl;
cout <> a;
}
return 0;
}
Тут же вроде по for темас?
файл:///C:/Users/Romul/Documents/C++%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8/%D0%A6%D0%B8%D0%BA%D0%BB%D0%B8/%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%B03/main.html
как-то так…
как делать такие окна(как в решениях заданий)?
#include
using namespace std;
int main()
{
setlocale (0, “укр”);
int quantity = 20, numberOfCar, packing;
cout<<"На складi 20 ящикiв"<<endl;
cout<<"Ваша задача розподiлити їх по грузовим машинам(можна не порiвну)"<<endl;
cout<<endl;
cout<<endl;
cout<>numberOfCar;
cout< 20 && numberOfCar < 1)
{
cout<<"Error";
break;
}
else
{
for (INT = 0; a < numberOfCar; A ++)
{
cout<>packing;
cout<<endl;
if (quantity quantity) cout<<"Погрузка не здiйснена, перевiрте правильнiсть вводу данних та к-сть ящикiв на складi"<<endl; //packing – розфасовка
quantity-=packing;
}
}
break;
}
return 0;
}
#include
#include
#include
використовуючи зЬй::cout;
використовуючи зЬй::cin;
використовуючи зЬй::endl;
int main()
{
setlocale(LC_ALL, “російський”);
INT B = 15;
INT C;
cout << "Количество ящиков на складе: " << b << endl < 0; i – c)
{
if (b > 0)
{
cout << "Подъехала машина. Сколько ящиков в неё погрузить?" <> c;
if (b – c >= 0)
{
cout << "Остаток ящиков на складе " << b – c << endl << endl;
B = B – c;
}
else if (b – c < 0)
cout << "Количество ящиков на складе: " << b << ". Введите меньшее количество." << endl << endl;
}
if (б == 0)
{
cout << "Склад пуст.";
break;
}
}
_getch();
return 0;
}
Вот можно же в цикле for оставить пустые скобки (;;)? А если пропустить только условие повторения? Почему у меня не инкрементируется i? Постоянно выдаёт “2 в степени 2 = 4″(разумеется если вводить 2).
#include
#include
#include
використовуючи зЬй::cout;
використовуючи зЬй::cin;
використовуючи зЬй::endl;
int main()
{
setlocale(LC_ALL, “російський”);
int a;
INT C;
cout <> a;
for (int i = 2;; i )
{
int r (0);
if (i = 2)
г = а * a;
if (i != 2)
г = г * a;
cout << a << " в степени " << i << " = " << R << endl;
cout <> c;
if (з == 0)
break;
i ;
}
_getch();
return 0;
}
Копирую из исходника, а сохраняется в комменте
“соіЬ;”,
замість
“cout <> a;”