剛學檔案輸入輸出和篩法求素數。希望各位大神指點指點,實在找不出哪里不對

題目是:有一個檔案abc.txt,其中含有若干行(行數<=200),每行有若干個整數(個數<50),判斷該檔案中每行含有的素數個數,并輸出到檔案result.txt
樣本輸入檔案
11 101 272
5 10 17 65 71
99 114 37 159 1118 13 7 15476 35841 23
145 35 106 867
樣本輸出檔案
2
3
4
0
#include<iostream>
#include<vector>
#include<fstream>
#include<sstream>
using namespace std;
bool isprime[10000];
void judgeprime()
{
int i;
for(i=2;i<10000;i++)
isprime[i]=1;
for(i=2;i*i<10000;i++){
if(isprime[i]==1){
for(int j=i*i;i<10000;j+=i)
isprime[j]=0;
}
}
}
int main()
{
judgeprime();
ifstream in;
in.open("abc.txt");
vector<vector<int> > prime;
for(string str;getline(in,str);){
vector<int > s;
int num;
for(istringstream sin(str);sin>>num;){
s.push_back(num);
}
prime.push_back(s);
}
int n=prime.size() -1;
int i,j,cnt[n];
for(i=0;i<n;i++){
cnt[i]=0;
for(j=0;j<prime[i].size() ;j++){
if(isprime[prime[i][j]]==1)
cnt[i]++;
}
}
ofstream out;
out.open("result.txt");
for(int i;i<n;i++)
out<<cnt[i]<<endl;
in.close() ;
out.close() ;
return 0;
}
uj5u.com熱心網友回復:
你是OIer嗎?如果是,且剛剛學素數篩的話。
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);就夠了。
還有,下次代碼像這樣發,不然誰愿意幫你看
uj5u.com熱心網友回復:
好的我試試,謝謝uj5u.com熱心網友回復:
關于篩素數,今天剛討論完的一個帖子https://bbs.csdn.net/topics/396093675#post-410925108
初學者學會把問題分解, 篩素數是一個問題, 檔案存盤是一個問題, stringstream讀取是一個問題
拆解看,研究清楚了再來拼接,要不一堆亂麻找不出個頭緒來
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117313.html
標籤:C++ 語言
上一篇:貓捉老鼠的問題
