2012-05-28 67 views
1

我無法獲得打印出來的總和 我沒有收到任何警告或類似信息。沒有語法錯誤但沒有打印結果

試圖在這裏做這個問題:http://projecteuler.net/problem=1 程序運行,然後永遠停止。

// Adding multiples of this and following equations 
#include "std_lib_cmpt125.h" 

void SumMultiple(int Max,int Base) 
{ 
    int i=0; 
    int sum=0; 
    for(i;i<Max;i+Base) 
     { 
      sum=i+sum; 
     }; 
    cout<<"The sum"<<sum; 
} 
int main() 
{ 
    int base=0; 
    int max=0; 
    int sum=0; 
    cout<<"Please enter the sum's multiple: (ex. 3: 3,6,9,12...)\n"; 
    cin>>base; 
    cout<<"Please enter the sum's maximum: (ex. 10000)\n"; 
    cin>>max; 
    SumMultiple(max,base); 
    return 0; 
} 
} 
+0

您是否嘗試過一個調試器? –

+0

攤位__ For__ ever ...哼。 – corn3lius

+0

在這裏沒有必要的調試器..一個很好的做法,雖然 你可以清楚地看到什麼是我的答案 – Yatin

回答

6

你錯過遞增

for(i;i<Max;i=i+Base) 
{ 
.. 
} 

或者

for(i;i<Max;i+=Base) 
{ 
    .. 
} 
+0

給出的錯誤謝謝,我不能相信我忽略了>< –

1

變化:

int i=0; 
int sum=0; 
for(i;i<Max;i+Base) 
{ 
    sum=i+sum; 
}; 

要:

int sum = 0; 
for (int i = 0; i < Max; i += Base) 
{ 
    sum += i; 
} 

注意的是,在原for循環的第一條語句什麼也不做,那的i值必須增加(這與+=操作最簡單的實現),以及閉括號後的分號是不必要的。

在C++中習慣於在循環中聲明一個循環變量,以限制其範圍並強調其作爲計數器的用途。

+0

謝謝大家,我真的很感激它:) –

1

您有一個額外的大括號}結束時,你是不是增加我

0

更改

for(i;i<Max;i+Base) 
     { 
      sum=i+sum; 
     }; 
    cout<<"The sum"<<sum; 

for(i;i<Max;i=i+Base) 
     { 
      sum=i+sum; 
     }; 
    cout<<"The sum"<<sum; 

for(i;i<Max;i+=Base) 
     { 
      sum=i+sum; 
     }; 
    cout<<"The sum"<<sum; 

以上代碼將增加計數器我並顯示必要的結果

0

此外,你不會得到該功能的答案。問題1是尋找3或5的倍數,從[1..999]

總和試試這個

for (int i = 1; i < Max ; i++) 
    sum += ((i % 3 && i % 5) ? 0 : i ; 
return sum 
相關問題