2017-07-07 167 views
-1

所以我有一個類的任務,我必須要求用戶輸入1到3000之間的整數。然後我的程序應該能夠判斷整數是否是質數。最後,我必須將該整數放入一個文件中,但前提是它是一個素數。但我的問題是我的語法,我不確定它是否正確(很明顯,這不是因爲我不斷收到錯誤)。是否可以在函數中打開文件?如果是這樣,它會成爲一個參數? 我一直在閱讀我的教科書,並儘可能多地使用Google進行一些指導,但我仍感到迷茫。任何建議都會有幫助。找到素數,然後把素數輸入到輸出文件

編輯:我的邏輯儘可能的數字工作,但是當我添加代碼寫入文件,我現在得到錯誤。

兩個誤差是

C2440初始化:不能從常數字符轉換爲int(18行)

C2079 MYFILE:使用未定義class'std :: basic_fstream的<>炭的std :: char_traits> '

這是我的代碼到目前爲止!

// Project 5.cpp : Defines the entry point for the console application. 
    // 


#include <fstream> 
#include "stdafx.h" 
#include <iostream> 

using namespace std; 

//functions 

void prime(int x); 

//variables 
int x=0; 
int i; 
char answer; 
fstream myfile("castor_primes.txt"); 

int main() 

{ 


    do 
    { 
     cout << "Enter an integer between 1 and 3000 \n"; 
     cin >> x; 
     if (x == 1) 
     { 
      cout << x << " is not a prime number.\n"; 
     } 
     else if (x < 1 || x>3000) 
     { 
      cout << x << " is an invalid number. \n"; 
     } 
     else 
     { 

      prime(x); 
     } 

     cout << "Do you want to enter another number? Y/N \n"; 
     cin >> answer; 
    } while (answer == 'y' || answer == 'Y'); 

    myfile.close(); 

    return 0; 
} 

void prime(int x) 
{ 


    if (x == 2) 
    { 
     cout << "Yes, " << x << " is Prime\n"; 
    } 
    else 
    { 
     for (i = 2; i < x; i++) 
     { 
      if (x%i == 0) 
      { 
       cout << x << " is not a prime number\n"; 
       break; 
      } 
     } 
     if (x == i) 
     { 
      cout << "Yes, " << x << " is Prime\n"; 
      myfile << x ; 

     } 
    } 
} 
+0

只要稍微注意:每個素數是奇數除了2.本呼喊了一些優化... – Garmekain

+0

「其實也很明顯這不是因爲我不斷收到錯誤」 - 嗯......關於發佈這些錯誤怎麼辦?我在Code :: Blocks上運行你的代碼而沒有'#include「stdafx.h」',它工作正常。 @Garmekain,關於優化 - 實際上有更多的方法來優化它,但這與問題無關。我極力鼓勵你通過使用'outputFile.good()'方法來測試文件打開過程是否成功。如果開放成功,它將返回true。在你發佈錯誤之後,我將着手回答這個問題,併爲類似的未來項目提供一些建議。 – Fureeish

+0

@Fureeish這就是爲什麼它只是一個小記錄。 – Garmekain

回答

-1

#include "stdafx.h"使用Microsoft Visual Studio時,包括預編譯的頭文件。檢查文件是否存在,以及它是否正確(取決於你看到的錯誤)。

由於在函數中打開和關閉outputFile,因此沒有必要將outputFile傳遞給prime()函數。儘管如此,它工作得很好。

它是函數調用的參數(如果這是您的問題)並且是一個全局變量,因爲它在main()函數之外定義。

正如其他人建議的代碼功能,如果上述#include "stdafx.h"被刪除,但我不知道這是如何影響編譯在Visual Studio中。

+0

已解決。這不是解決OP錯誤的有效答案。 – Garmekain

+0

正確,但它確實回答了有關在函數中打開文件的問題。 – Kevin

相關問題