177
{ // Начало тела внешн. цикла
//--------------------------------------------------------------
for(day=1; day<=30; day++) // Цикл по дням месяца
One_Farm=One_Farm*(1+Perc_day/100);//Накопление на 1й ферме
//--------------------------------------------------------------
Mons++; // Считаем месяцы
if (One_Farm < One_Farm_max) // Если меньше допустимого,.
continue; // .. то овец не переводим
Two_Farm=Two_Farm+One_Farm*Perc_exit/100;//Количес. на 2 ферме
One_Farm=One_Farm*(1-Perc_exit/100);// Остаток на 1 ферме
} // Конец тела внешнего цикла
//--------------------------------------------------------------------
Alert("Цель будет достигнута через ",Mons," мес.");//Вывод на экран
return; // Выход из функции start()
}
//--------------------------------------------------------------------
В начале программы, как обычно, описаны и прокомментированы переменные.
Собственно расчёт выполняется в цикле while, а после его окончания выводится
соответствующее сообщение. Расчёты во внешнем цикле while будут происходить до тех
пор, пока не будет достигнута цель, а именно, пока общее количество овец на второй
ферме не достигнет ожидаемого значения 35 000.
Внутренний цикл for очень прост: значение баланса увеличивается ежедневно на 1%.
Никакого анализа суммы в этом цикле не выполняется, потому что по условию задачи
перевод овец может происходить только в конце месяца. Таким образом, после выхода из
цикла for переменная One_Farm имеет значение, равное количеству овец на первой ферме.
Сразу после этого вычисляется значение переменной Mons, увеличивающееся на единицу
при выполнении каждой итерации внешнего цикла while.
В зависимости от текущего количества овец на первой ферме выполняется одно из двух
вычислений:
если количество овец на первой ферме превышает пороговое значение 50 000, то
необходимо 10% овец с первой фермы перевести на вторую ферму;
в противном случае - овец с первой фермы на вторую не переводить и продолжать
разведение овец на первой ферме.
Разветвление алгоритма осуществляется с помощью оператора if:
if (One_Farm < One_Farm_max) // Если меньше допустимого,.
continue; // .. то овец не переводим