青蛙出井问题,输出结果是错误的

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

img


```c++
#include
int main()
{ int n,i,a,b,c,d,e,f;
  while(scanf("%d%d%d",&a,&b,&c)!=EOF)
  { for(i=1;i++;)
    { if((i*b-i*c)>=c)
       d=i*b+i*c;
       e=(i-1)*c;
        printf("%d %d %d",i,d,e);
        break;
    }
  }
  
    return 0;
}

```

你都不判断爬的要比下滑的快吗,下滑比爬还快永远都爬不出去呀,要求你输出error你程序里连error字样都没有能对才怪
这题根本不用循环
假设三个输入分别是a,b,c
a是井深,b是爬的高度,c是滑的高度
首先要判断除非b>=a或者b>c才有可能爬出去,否则爬不出去
定义三个变量d,e,f,
d是天数,e是总共爬的距离,f是总共下滑的距离
d=(a-b-1)/(b-c)+2 //这个公式有点抽象,不太好讲,但是你可以带入各种数字验证
f=c*(d-1) //经过几天就下滑几次
e=a+f //整个井的高度,加上退的高度,就是一共爬的高度


#include<iostream>
#include<iomanip>
#include<algorithm>
#include<string.h>
#include<math.h>
#define llu unsigned long long
using namespace std;
bool compare(int a,int b)
{
    return a>b;
}
int main()
{
    int h,u,d,n=0;//此处用h代表青蛙离井口的高度,开始时等于井的深度,n代表天数
    cin >> h >> u >> d ;
    while(h-d>0){//当离井口的高度减去昨天晚上掉下去的高度大于0,证明昨天白天还没有爬到井口,继续循环
        h-=u;//爬高u,离井口的高度减去u
        n++;//天数+1
        h+=d;//离井口的高度增加了d
    }
    cout << n << endl ;
    return 0;
}