#11900: 新手求抓錯


fdhs10635401 (于)


#include<iostream>
using namespace std;
int main()
{
     int n,m;
     while(cin>>n>>m)
     {
          int add=0,a=0;
          for(int b=n;a++;add<m)
          {
               b+=a;
               add+=b;
          }
          cout<<a<<endl;
     }
}

新手來求解 為什麼結果都是1? 我覺得我邏輯沒問題啊?

#11901: Re:新手求抓錯


icube (!@#$%^&*()_+)


#include
using namespace std;
int main()
{
     int n,m;
     while(cin>>n>>m)
     {
          int add=0,a=0;
          for(int b=n;a++;add<m)
          {
               b+=a;
               add+=b;
          }
          cout<<a<<endl;
     }
}

新手來求解 為什麼結果都是1? 我覺得我邏輯沒問題啊?

for的語法是 for (初始敘述; 條件敘述; 迴圈敘述)

可以改寫成

 

初始敘述;

while (條件敘述) {

    ...

    迴圈敘述

}

你的條件敘述和迴圈敘述放反了

剩下的問題自己找看看

1 3 應該輸出 3

1 -1 應該輸出 1(不數時總和=0>-1,但至少要數一個)

1 55 應該輸出 11

#11932: Re:新手求抓錯


nkavengertree (LaG)


#include
using namespace std;
int main()
{
     int n,m;
     while(cin>>n>>m)
     {
          int add=0,a=0;
          for(int b=n;a++;add<m)
          {
               b+=a;
               add+=b;
          }
          cout<<a<<endl;
     }
}

新手來求解 為什麼結果都是1? 我覺得我邏輯沒問題啊?

--------------------------------------------------------------

你的變數定義是:
n : 起始數字
m : 最終總和的限制
a : 計算次數
add : 總合計算
 
第一個問題: for 迴圈的語法錯誤
應改成
for (int b=n; add<m; a++)
 
 
第二個問題: 沒有經過每一個數字
舉例:n=1, m=10
 
Loop1 : b=n=1
             b+=0       =>   b=1
             add+=b   =>   add=b=1
Loop2:  b+=1      =>    b=2
             add+=b   =>   add=1+1=2
Loop3:  b+=2       =>   b=4          *此時發現b跳過3這個數字
 
應該是這兩個問題吧
給你參考