查找素数,然后将素数放入输出文件中

时间:2017-07-07 23:34:17

标签: c++ function file-io output primes

所以我有一个类的赋值,我必须向用户询问1到3000之间的整数。然后我的程序应该能够判断整数是否是素数。最后,我必须将该整数放入一个文件中,但前提是它只是一个素数。但我的问题是我的语法,我不确定它是否正确(实际上很明显,这不是因为我不断收到错误)。是否可以在函数中打开文件?如果是这样,它会成为一个参数? 我一直在阅读我的教科书和谷歌搜索,以获得一些指导,但我仍然感到迷茫。任何建议都会有帮助。

编辑:我的逻辑就数字而言,但是当我添加代码写入文件时,我现在遇到错误。

这两个错误是

C2440初始化:无法从常量char转换为int(第18行)

C2079 myfile:使用未定义的class'std :: basic_fstream<> char,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 ;

        }
    }
}

1 个答案:

答案 0 :(得分:-1)

使用Microsoft Visual Studio时,

#include "stdafx.h"包含预编译的头文件。检查该文件是否存在以及是否正确(取决于您看到的错误)。

没有理由将outputFile传递给prime()函数,因为您在函数中打开和关闭它。虽然它可以正常工作。

它是函数调用的参数(如果这是你的问题)并且是一个全局变量,因为它是在main()函数之外定义的。

正如其他人建议的那样,如果删除了前面提到的#include "stdafx.h",代码就会起作用,但我不确定它是如何影响Visual Studio中的编译的。