2015-09-25 28 views
-3

我剛剛想到我會嘗試學習如何編碼。我在基礎知識,並發現了一些網上做的練習,但我已經坐在這裏約40分鐘,無法弄清楚。因此,即使這似乎基本大多數的你,我會尋求一些幫助:)程序找到最大的因數返回0

所以這裏的任務:

規定整數的範圍是[M,N]。編寫一個程序來查找具有最大除數的數字。

輸入/輸出:

Initial data | Result 

10 40  |  36 

代碼:

#include <cstdlib> 
#include <iostream> 
#include <fstream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    int m, n, s, sd = 0, ats; 
    double a = 0; 
    ifstream fd("Duomenys.txt"); 
    fd >> m >> n; 
    for(int i = m; i<=n; i++){ 
     s = 0; 
     for(int j = 1; j<=i; ++j){ 
      a = 0; 
      a = i % j; 
      if(a = 0) s= s + 1; 
     } 
    if(s > sd) { 
     i = ats; 
     s = sd; 

     } 
    } 
    cout << ats; 
     system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

現在我只使用cout << ats,以測試它的時刻,但如果我運行它得到一個0作爲一個答案。

+1

提示:'如果(a = 0)'可能沒有做你想做的事 – BlackDwarf

+0

怎麼會這樣?你能解釋一下嗎? ( – Kotton

+3

)爲了比較值,你應該使用'=='而不是'='(它只用於賦值)。另外變量'ats'永遠不會被初始化(我的編譯器會對此提出警告,並且當出現警告時我運行代碼) – Dialecticus

回答

3

如果要測試a是否等於0,則必須使用等於運算符,即==

隨着if (a = 0),你實際上分配0給a,然後測試這個操作的結果,它總是爲0.這就是爲什麼if,這裏的指令永遠不會被執行。

代碼中的其他問題:

  • 可以使用可變ats但從來沒有初始化它,所以它的價值是不確定的
  • 我看不出有任何理由adouble,而不是一個int

我建議你把你所有的編譯器警告,並a good book or tutorial about C++

啓動10
+0

非常感謝!現在想想它!這是雙重的,因爲我在開始時嘗試了一些不同的東西:P無論如何非常感謝您花時間幫助我! – Kotton