2017-07-07 11 views
-1

私は1〜3000の整数をユーザに求めなければならないクラスの割り当てをしています。整数は素数であるかどうか。最後に、その整数をファイルに入れる必要がありますが、それは素数でなければなりません。しかし、私の問題は私の構文です、私はそれが正しいかどうかは確かではありません。関数内でファイルを開くことは可能ですか?もしそうなら、それはパラメータになりますか? 私は教科書を見て、できるだけガイダンスをしていますが、まだ失われていると感じています。どんな助言も役に立ちます。素数を見つけて素数を出力ファイルに入れよう

編集:私のロジックは数字の通りですが、ファイルに書き込むコードを追加するとエラーになります。

2つのエラーは、初期化

C2440は、(ライン18)をintに一定のチャーへ変換することができない

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を使用するときに事前コンパイル済みヘッダーファイルが含まれています。そのファイルが存在するかどうか、またそれが正しいかどうかを確認してください(表示されるエラーによって異なります)。

prime()関数にoutputFileを渡す理由はありません。なぜなら、関数内でそれを開閉しているからです。あなたがしてもうまく動作しますが。

これは関数呼び出しのパラメータです(質問の場合)。これはmain()関数の外で定義されているため、グローバル変数です。

前述の#include "stdafx.h"が削除された場合、コード機能が提案されている人もいますが、Visual Studioのコンパイルにどのような影響があるかわかりません。

+0

Downvoted。これは、OPのエラーを取り除く有効な答えではありません。 – Garmekain

+0

正しいですが、関数内のファイルを開くことについての質問には答えます。 – Kevin

関連する問題