C/C++编程问题

meetyu 2009-02-13 03:10:48
#include <fstream>
#include <iomanip>

using namespace std;

int main() {
const int max = 100;
long primes[max] = {2, 3, 5};
int count = 3;
int trial = 5;
bool isprime = true;

do {
trial += 2;
int i = 0;
do {
isprime = trial % *(primes + i) > 0;
} while(++i < count && isprime);
if(isprime)
*(primes + count++) = trial;
} while(count < max);

ofstream outFile("F:\\try\\primes.xml");

for(int i = 0; i < max; ++i){
if(i % 5 == 0)
outFile << endl;
outFile << setw(10) << *(primes + i);
}

return 0;
}

用以上程序将前100素数写入文件,
问题是如何从文件中读取第N个素.同时要求不知道文件中有几个素数的条件下
输入:3
输出:5
...全文
204 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaochengzhang 2009-02-15
  • 打赏
  • 举报
回复
不懂,帮顶
九桔猫 2009-02-14
  • 打赏
  • 举报
回复
帮顶
genius_tong 2009-02-14
  • 打赏
  • 举报
回复
楼上嘛意思?
邓芳 2009-02-14
  • 打赏
  • 举报
回复
哎,我也有一个问题,关于C++的
sunnywyg 2009-02-13
  • 打赏
  • 举报
回复

#include <fstream>
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
const int max = 100;
long primes[max] = {2, 3, 5};
int count = 3;
int trial = 5;
bool isprime = true;

do{
trial += 2;
int i = 0;
do {
isprime = trial % *(primes + i) > 0;
}while(++i < count && isprime);
if(isprime)
*(primes + count++) = trial;
} while(count < max);

ofstream outFile("d:\\primes.xml", ios::out);

for(int i = 0; i < 100; ++i)
{
if(i % 5 == 0 && i != 0) //防止第一行是空行
{
outFile << endl;
}
outFile << setw(10) << *(primes + i);
}

cout<<"input the number you want to check: ";
int number = 0, temp = 0;
ifstream in("d:\\primes.xml");
cin>>number;
while (number-- > 0)
in >> temp;
cout << temp; //此即为要输出的数
return 0;
}
sagegz 2009-02-13
  • 打赏
  • 举报
回复
应该跟行没有关系,问题出在for(int b;inFile>>b;)这里,它无法读出最后一行的数据,
如果把max改成105,就能成功读出96-100的数据,否则96-100是读不出正确数据的.
我也不太清楚为什么,等待大牛!
sagegz 2009-02-13
  • 打赏
  • 举报
回复
LZ再考虑下如何让首行就开始显示数字.程序有些问题,回来再改.

#include <fstream>
#include <iomanip>
#include <iostream>

using namespace std;

int main() {
const int max = 100;
long primes[max] = {2, 3, 5};
int count = 3;
int trial = 5;
bool isprime = true;
do {
trial += 2;
int i = 0;
do{
isprime = trial % *(primes + i) > 0;
} while(++i < count && isprime);
if(isprime)
*(primes + count++) = trial;
} while(count < max);
ofstream outFile("F:\\primes.txt");
for(int i = 0; i < max; ++i){
if(i % 5 == 0)
outFile << endl;
outFile << setw(10) << *(primes + i);
}
ifstream inFile("F:\\primes.txt");
if(!inFile)
cerr<<"error!";
int a[max],i=0;
for(int b;inFile>>b;){
a[i] = b;
++i;
}
cout<<"input the number you want to check: ";
int number;
cin>>number;
cout<<"the result is: ";
cout<<a[number-1]<<endl;
return 0;
}

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧