Условия: На бамбуковой плантации завелись гусеницы. Они спят днем и едят бамбук ночью. Бамбук генно-модифицированный и растет только при свете дня, зато очень быстро — по 50 сантиметров ежедневно! Гусеницы съедают 20 из них каждую ночь. Бамбуковые саженцы при высадке утром имеют высоту 1 метр. Напишите программу, которая: 1.Считает, какой высоты бамбук будет в середине третьего дня. Усложнение — посчитайте это не за несколько подходов, а одной формулой. 2.Считает, сколько полных дней понадобится бамбуку, чтобы его можно было срубить и продать. Для этого он должен вырасти до 3 метров. 3.Напишите такую же программу, но которая позволяла бы работать с разными гусеницами и разными сортами бамбука. Пользователь может ввести любую скорость роста бамбука, любую скорость его поедания гусеницами, любую высоту саженца, любое количество дней (для первой части задания) и любую целевую высоту взрослого бамбука (для второй части задания). Примечание. Допускается погрешность в 1 сантиметр для первой части задания. Для второй части напишите программу так, чтобы она считала, через какое минимальное количество дней бамбук гарантированно созреет. Все расчеты проводите в сантиметрах. #include <iostream> #include <iomanip> #include <random> using namespace std; unsigned integer(const char* msg) { auto value = 0U; while (!value) { cout << msg; cin >> value; cin.ignore(cin.rdbuf()->in_avail()); } return value; } double real(const char* msg) { auto value = 0.0; while (value <= 0.0) { cout << msg; cin >> value; cin.ignore(cin.rdbuf()->in_avail()); } return value; } int main() { system("chcp 1251 > nul"); auto gr = integer("Скорость роста бамбука (в сантиметрах): "); auto es = integer("Скорость поедания бамбука (в сантиметрах): "); auto sh = real("Высота саженца (в метрах): "); auto nd = integer("Количество дней: "); auto th = real("Целевая высота (в метрах): "); if (gr <= es) puts("Растение погибло!"); else { auto g = sh * 100.0 + (gr - es) * nd - gr / 2.0 + es; cout << fixed << setprecision(2); cout << "Высота бамбука в середине заданного дня: " << g / 100.0 << " м\n"; auto d = 0; g = sh * 100.0; while (++d) { g += gr; if (g >= th * 100.0) break; g -= es; } cout << "Количество полных дней на выращивание бамбука: " << d << '\n'; } } Код #include <iostream> #include <iomanip> #include <random> using namespace std; unsigned integer(const char* msg) { auto value = 0U; while (!value) { cout << msg; cin >> value; cin.ignore(cin.rdbuf()->in_avail()); } return value; } double real(const char* msg) { auto value = 0.0; while (value <= 0.0) { cout << msg; cin >> value; cin.ignore(cin.rdbuf()->in_avail()); } return value; } int main() { system("chcp 1251 > nul"); auto gr = integer("Скорость роста бамбука (в сантиметрах): "); auto es = integer("Скорость поедания бамбука (в сантиметрах): "); auto sh = real("Высота саженца (в метрах): "); auto nd = integer("Количество дней: "); auto th = real("Целевая высота (в метрах): "); if (gr <= es) puts("Растение погибло!"); else { auto g = sh * 100.0 + (gr - es) * nd - gr / 2.0 + es; cout << fixed << setprecision(2); cout << "Высота бамбука в середине заданного дня: " << g / 100.0 << " м\n"; auto d = 0; g = sh * 100.0; while (++d) { g += gr; if (g >= th * 100.0) break; g -= es; } cout << "Количество полных дней на выращивание бамбука: " << d << '\n'; } } Код я с горем пополам написал но вот ошибку не вижу( посмотрите что происходит если на ввод подать не числовое а символьное значение: так же Пример исходных данных: При таком условии бамбук растёт по 30см в день, высота саженца 100см, мы получили результат 6 дней. Делаем проверку: 100см+30см*6=280см, а это на 20 см меньше