Загрузка...

Помогите исправить код с++

Тема в разделе C/C++ создана пользователем qwertytue 9 окт 2021. 292 просмотра

  1. qwertytue
    qwertytue Автор темы 9 окт 2021 2 7 окт 2021
    Условия: На бамбуковой плантации завелись гусеницы. Они спят днем и едят бамбук ночью. Бамбук генно-модифицированный и растет только при свете дня, зато очень быстро — по 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';
    }
    }
    Код я с горем пополам написал но вот ошибку не вижу(
    посмотрите что происходит если на ввод подать не числовое а символьное значение:
    [IMG]
    так же Пример исходных данных:
    [IMG]
    При таком условии бамбук растёт по 30см в день, высота саженца 100см, мы получили результат 6 дней. Делаем проверку:
    100см+30см*6=280см, а это на 20 см меньше
     
Top
Загрузка...