C++ 查找素数,然后将素数放入输出文件
所以我有一个类的赋值,在这个类中,我必须要求用户输入一个介于1和3000之间的整数。然后我的程序应该能够判断整数是否是素数。最后,我必须将该整数放入一个文件中,但前提是它是一个素数。但我的问题是我的语法,我不确定它是否正确(事实上很明显,这不是因为我不断出错)。是否可以在函数中打开文件?如果是这样,它会成为一个参数吗? 我一直在翻阅我的课本,尽可能多地在谷歌上搜索一些指导,但我仍然感到迷茫。任何建议都会有帮助 编辑:就数字而言,我的逻辑是有效的,但是当我添加代码写入文件时,我现在遇到了错误 这两个错误是 C2440初始化:无法从常量char转换为int(第18行) C2079 myfile:使用未定义的类“std::basic\u fstream char,std::char\u traits>” 这是到目前为止我的代码C++ 查找素数,然后将素数放入输出文件,c++,function,file-io,output,primes,C++,Function,File Io,Output,Primes,所以我有一个类的赋值,在这个类中,我必须要求用户输入一个介于1和3000之间的整数。然后我的程序应该能够判断整数是否是素数。最后,我必须将该整数放入一个文件中,但前提是它是一个素数。但我的问题是我的语法,我不确定它是否正确(事实上很明显,这不是因为我不断出错)。是否可以在函数中打开文件?如果是这样,它会成为一个参数吗? 我一直在翻阅我的课本,尽可能多地在谷歌上搜索一些指导,但我仍然感到迷茫。任何建议都会有帮助 编辑:就数字而言,我的逻辑是有效的,但是当我添加代码写入文件时,我现在遇到了错误 这两
// 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的错误。正确,但它确实回答了有关在函数中打开文件的问题。