求解一道三级网络C的上机题,要求用C++写出

题如下:请编写一个函数num(intm,intk,intxx[]),该函数的功能是:将大于整数m且仅靠m的k个素数存入数组xx传回。然后调用函数readwriteDat(... 题如下:请编写一个函数num(int m,int k,int xx[]),该函数的功能是:将大于整数m且仅靠m的k个素数存入数组xx传回。
然后调用函数readwriteDat(),从int.dat文件中读取10组数据,分别得出结果,且把结果输出到文件out.dat中。
部分程序已给出。
例如:若输入17 5,则应输出:19 23 29 31 37。

因为我学的是C++,看见C给出的部分代码就头疼,所以请高手帮忙用C++写一遍,希望代码清晰易懂,下面是这题给出的部分代码,请帮忙用C++写出来
#include <conio.h>
#include <stdio.h>
void readwriteDat();
void num(int m, int k, int xx[])
{

}
main()
{
int m, n, xx[1000];
printf("\nPlease enter two integers:");
scanf("%d%d", &m, &n);
num(m, n, xx);
for (m=0; m<n; m++)
printf("%d ", xx[m]);
printf("\n");
readwriteDat();
}
void readwriteDat()
{
int m, n, xx[1000], i;
FILE *rf, *wf;
rf = fopen("in.dat", "r");
wf = fopen("out.dat", "w");
for (i=0; i<10; i++)
{
fscanf(rf, "%d %d", &m, &n);
num(m, n, xx);
for (m=0; m<n; m++)
fprintf(wf, "%d ", xx[m]);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}
展开
 我来答
georangel
推荐于2016-07-28 · TA获得超过541个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:357万
展开全部
#include <iostream>
#include <fstream>
using namespace std;

void readwriteDat();
// 找到符合要求的素数
void num(int m, int k, int xx[])
{
int count_k = 0;
int add_m = m;
bool flag=true;
while (count_k < k)
{
add_m += 1;
flag=true;
for(int i=2;i<=(add_m)/2;i++)
{
if((add_m)%i==0)
{
flag = false;
break;
}
}
if (flag)
{
xx[count_k++] = add_m;
}
}
}
// 主函数
int main()
{
int m, n, xx[1000];
cout << "\nPlease enter two integers:";
cin >> m >> n;
num(m, n, xx);
for (m=0; m<n; m++) cout << xx[m] << " ";
cout << endl;
readwriteDat();
return 1;
}
// 从文件中读取,处理之后,写到文件
void readwriteDat()
{
int m, n, xx[1000], i;

// 打开in.dat文件,用于读数据 ;
// 也可以写成:ifstream fin("in.dat",ios::in);
ifstream fin;
fin.open("in.dat",ios::in);
if (!fin)//当fin打开失败时进行错误处理
{
cerr<<"in.dat file not open!"<<endl;
exit(1);
}

//打开out.dat文件,用于写数据
ofstream fout;
fout.open("out.dat",ios::out);
if (!fout)//当fout打开失败时进行错误处理
{
cerr<<"out.dat file not open!"<<endl;
exit(1);
}

for (i=0; i<10; i++)
{
// 文件in.dat里参数的格式可以如下:用空格隔开
// 100 2 200 2 300 2 400 2 500 2 600 2 700 2 800 5 900 5 1000 2
fin >> m;
fin >> n; // 从in.dat里读取两个参数
num(m, n, xx);
for (m=0; m<n; m++) fout << xx[m] << " "; // 输出结果到out.dat
fout << endl;
}
}

参考资料: http://hi.baidu.com/date_/blog/item/7296e2c3d9ba2f1d0ef477cb.html

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanhaixin123
2009-03-12
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
#define MAXSIZE 100
class ReadPrim
{

public:
ReadPrim(){}
int num(int iData,int iCount,int iArray[]);
void readwriteDat();

};
int ReadPrim::num(int iData,int iCount,int iArray[])
{
int i = 0,j = 0,iSelfData,iNum = 0;
for( i = 1;i <= iCount;i++)
{
iSelfData = iData + i;
for(j = 1;j<iSelfData;j++)
{
if(iSelfData % i == 0)
{
iNum++;
}
if(2 == iNum)
{
iArray[i-1] = iSelfData;
}
}
}
return sizeof(iArray)/sizeof(int);
}

void ReadPrim::readwriteDat()
{

int m, n, xx[1000], i;
FILE *rf, *wf;
rf = fopen("in.dat", "r");
wf = fopen("out.dat", "w");
for (i=0; i<10; i++)
{
fscanf(rf, "%d %d", &m, &n);
num(m, n, xx);
for (m=0; m<n; m++)
fprintf(wf, "%d ", xx[m]);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}

void main()
{
ReadPrim RP;
RP.readwriteDat();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式