Спортивное программирование: циклы

Увы, никто из десятка отвечавших прошлый тест, не смог с ним справиться без ошибок. Больше всех порадовал Артём Еремеев, у которого всего два неправильных ответа. Ну, ничего. Продолжим познавать тайны спортивного программирования.

Кухня.

После прошлого поста, разговариваю с девчонками, которые также ходят на наши курсы. «Лена, ну теперь-то ты поняла?», а она: «Нет, всё равно не поняла». Ну ладно, объясним по другому. Вот ты же умеешь готовить, Лена? Конечно умеешь.

Представь, что ты — нанокулинарный робот. Рецепты — это твои программы. Два яйца и поллитра молока это тоже самое, что int eggs=2; double milk=0.5;   На входе тебе подаётся количество персон, желающих отведать блюдо, а на выходе ты подаёшь тарелку с едой.

Допустим, нанокулинарный робот собрался начистить и порезать кубиками картошку, три штуки. Мы можем составить рецепт так:

Возьми картошку.

Почисти её.

Порежь.

Возьми картошку.

Почисти её.

Порежь.

Возьми картошку.

Почисти её.

Порежь.

Это, конечно же, совершенно неприемлемо, если нужно ведро картошки начистить — рецепт будет дольше самого блюда. Поэтому программисты придумали

Циклы.

Нанокулинарный робот может почистить нужное количество картошки двумя способами.

Первый: берём листочек, записываем туда 0 — это будет счётчик почищенной картошки. Затем, берём одну, чистим, нарезаем, в листочке счётчик увеличиваем на один, делаем пока число почищенной картошки меньше пяти.

Второй: положить пять картошек в ведро, затем пока в ведре что-то есть, берём из него один корнеплод, чистим и нарезаем.

В Си++ возможны оба эти способа, давайте разберем их.

Цикл со счётчиком.

[cc lang=»cpp]
#include
using namespace std;
int main()
{
int n, s=0, i;
cin>>n;
for (i=1; i<=n; ++i) { s=s+i; } cout<=1;i—)
Цикл, который считает не по единице, а по два — for (i=0;i<=10; i+=2) Цикл, который идёт с шагом в PI/4 : for (double a=0;a<=3.1415*2;a+=3.1415/4) Цикл, который идёт по степеням двойки - for (i=1;i<=1024; i*=2) Цикл, который всё время делит пополам - for (i=1;i<=0.00001; i/=2) Вот вам дополнительное чтиво про цикл for. Дистанционные курсы по информатике

Цикл с условием.

Не всегда заранее известно количество раз, которое нужно повторить циклические действия. Вы же не знаете, сколько в ведре картошки. Поэтому имеется второй вариант цикла — «с условием». Вот пример:
[cc lang=»cpp]
#include
using namespace std;
int main()
{
int n, s=0, i=0;
cin>>n;
while (i<=n) { s=s+i; i++; } cout<дистанционные курсы по информатике

Ну вот, такие пироги.

В чём разница?

Ни в чём. На самом деле, оба цикла эквивалентны. С помощью while можно легко сымитировать for (я это выше показал), а с помощью for можно сымитировать while:
[cc lang=»cpp»]
#include
using namespace std;
int main()
{
int n=1, s=0;

for (;n!=0;)
{
cin>>n;
s=s+n;
}
cout<Loading…

Спортивное программирование: циклы: 3 комментария

  1. Пример с картошкой напомнил мне «Энциклопедию профессора Фортрана» из далекого 91-го..

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *