Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找素数,然后将素数放入输出文件_C++_Function_File Io_Output_Primes - Fatal编程技术网

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

C++ 查找素数,然后将素数放入输出文件,c++,function,file-io,output,primes,C++,Function,File Io,Output,Primes,所以我有一个类的赋值,在这个类中,我必须要求用户输入一个介于1和3000之间的整数。然后我的程序应该能够判断整数是否是素数。最后,我必须将该整数放入一个文件中,但前提是它是一个素数。但我的问题是我的语法,我不确定它是否正确(事实上很明显,这不是因为我不断出错)。是否可以在函数中打开文件?如果是这样,它会成为一个参数吗? 我一直在翻阅我的课本,尽可能多地在谷歌上搜索一些指导,但我仍然感到迷茫。任何建议都会有帮助 编辑:就数字而言,我的逻辑是有效的,但是当我添加代码写入文件时,我现在遇到了错误 这两

所以我有一个类的赋值,在这个类中,我必须要求用户输入一个介于1和3000之间的整数。然后我的程序应该能够判断整数是否是素数。最后,我必须将该整数放入一个文件中,但前提是它是一个素数。但我的问题是我的语法,我不确定它是否正确(事实上很明显,这不是因为我不断出错)。是否可以在函数中打开文件?如果是这样,它会成为一个参数吗? 我一直在翻阅我的课本,尽可能多地在谷歌上搜索一些指导,但我仍然感到迷茫。任何建议都会有帮助

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

这两个错误是

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

C2079 myfile:使用未定义的类“std::basic\u fstream char,std::char\u 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 ;

        }
    }
}
//Project 5.cpp:定义控制台应用程序的入口点。
//
#包括
#包括“stdafx.h”
#包括
使用名称空间std;
//功能
无效素数(intx);
//变数
int x=0;
int i;
答案;
fstream myfile(“castor_primes.txt”);
int main()
{
做
{
cout>x;
如果(x==1)
{
cout
#include“stdafx.h”
在使用Microsoft Visual Studio时包含预编译的头文件。检查该文件是否存在以及是否正确(取决于您看到的错误)

没有理由将outputFile传递到
prime()
函数中,因为您正在函数中打开和关闭它。尽管这样做可以正常工作

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


正如其他人建议的那样,如果删除了前面提到的
#include“stdafx.h”
,那么代码将起作用,但我不确定这会对Visual Studio中的编译产生什么影响。

请注意:除了2之外,每个素数都是奇数。这需要进行一些优化……”事实上,这显然不是因为我不断出错。”-那么…发布这些错误怎么样?我在没有包含“stdafx.h”的code::block上运行了您的代码
而且效果很好。@Garmekain,关于优化-实际上有更多的方法来优化它,但这与问题无关。我强烈建议您使用
outputFile.good()测试文件打开过程是否成功
method。如果打开成功,则返回true。在您发布错误后,我将继续回答问题,并为以后类似的问题提供一些建议projects@Fureeish这就是为什么它只是一个小注释。仅供参考,如果您将答案转换为小写或大写,您只需进行一次比较。请参见
std::toupper
std::tolower
在GCC中对我有效,不带
stdafx.h
头,如果行为是输入一个数字,如果它是prime,则将其写入
castor\u primes.txt
文件的第一个位置(如果它不存在,则创建它)。正如@Fureeish指出的,您应该发布您正在获得的错误。Downvoted。这不是一个有效的答案,无法消除OP的错误。正确,但它确实回答了有关在函数中打开文件的问题。