程序编辑哪里有错误?付费求解析。

img

img


上面是题目要求,下面是自己写的程序,找不出错在哪里,请高人指点!

根据题目描述,竹笋的生长速度逐渐递减,可以通过一个循环来模拟竹笋的生长过程。以下是一个用C++语言编写的解答示例:

#include <iostream>

int main() {
    int k;
    std::cin >> k;

    int height = 0;
    int day = 1;

    while (day <= 365) {
        height += 16.0 / day;  // 每天的生长速度递减
        if (height >= k) {
            std::cout << day << std::endl;
            return 0;
        }
        day++;
    }

    std::cout << -1 << std::endl;  // 如果一年后仍未达到收获高度,输出-1
    return 0;
}

输入部分使用 std::cin 获取竹笋的最低收获高度。然后,使用一个循环模拟竹笋的生长过程,每天累加生长速度,直到达到收获高度或超过一年的时间。如果在一年内达到了收获高度,输出当前的天数,否则输出-1。

没看到你输出 -1 的逻辑

#include <iostream>
using namespace std;

int main()
{
    double n = 1, k; 
    cin >> k; 
    int cnt = 0; 
    while (k > 0)
    {
        if (cnt > 365) break;
        cnt++;
        k -= 16.0 / n;
        n += 1;
    }
    if (cnt == 366) 
        cout << "-1";
    else
        cout << cnt;
    return 0;
}

#include <iostream>
using namespace std;

int calculateDays(int k) {
    if (k <= 0 || k > 120) {
        return -1;
    }

    double height = 0.0;
    int day = 1;

    while (height < k) {
        height += 16.0 / day;
        day++;
    }

    if (day > 365) {
        return -1;
    } else {
        return day;
    }
}

int main() {
    int k;
    cin >> k;

    int result = calculateDays(k);
    cout << result << endl;

    return 0;
}

上图

img


代码

#include <iostream>
using namespace std;
int main()
{
    double h = 0; // 竹笋的高度
    double d = 16; // 竹笋的生长速度
    int n = 1; // 天数
    double k; // 收获高度
    cin >> k; // 输入收获高度
    while (true) // 循环
    {
        h += d; // 竹笋在当天的生长量
        if (h >= k) // 判断是否达到收获高度
        {
            cout << n << endl; // 输出天数
            break; // 结束循环
        }
        if (n >= 365) // 判断是否超过一年
        {
            cout << -1 << endl; // 输出-1
            break; // 结束循环
        }
        d /= 2; // 竹笋的生长速度递减
        n++; // 天数增加
    }
    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^