读取文件中到的数字并统计其中奇数偶数水仙花数的个数。

之前的问题是:编写程序产生1000个取值范围在100-999之间的随机整数,并将这些整数以文本格式写入到c:\data3.txt中。(我之前提问过)

此题的要求是:

编写程序从所生成的数据文件c:\data3.txt中读取数据,统计其中奇数、偶数、水仙花数的个数,并将统计结果按如下格式写入到文本文件stat.txt中:

奇数XXX个

偶数XXX个

水仙花数XXX个

求该题代码(本人系统不行所以验证不了代码正误与否,想知道正确代码的写法)谢谢啦

代码及效果图如下:

 

代码:

#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;

//判断是否是水仙花
bool isSxh(int n)
{
	int s = 0;
	int a = n;
	int d = 0;
	while(a>0)
	{
		int d = a%10;
		s += (d*d*d);
		a = a/10;
	}
	if(s == n)
		return true;
	else
		return false;
}


int main()
{
	int i,tmp;
	int nmbJs = 0;
	int nmbOs = 0;
	int nmbSxh = 0;
	char ch;

	srand((unsigned int)time(0));
    //产生随机数并写入文件
	fstream fout("c:\\data3.txt",ios::out);
	if (!fout.is_open())
	{
		cout << "文件打开失败" << endl;
		return 0;
	}
	for (i=1;i<=1000;i++)
	{
		tmp = rand()%900 + 100; 
		fout << tmp << endl;
	}
	fout.close();

	//读文件
	fstream fin("c:\\data3.txt",ios::in);
	if (!fin.is_open())
	{
		cout << "文件打开失败" << endl;
		return 0;
	}

	while(!fin.eof())
	{
		fin >> tmp >> ch;
		if (tmp%2 == 0)
			nmbOs++;
		else 
			nmbJs++;
		if(isSxh(tmp))
			nmbSxh++;
	}
	fin.close();

	
	//写结果
	fstream ft("c:\\stat.txt",ios::out);
	if (!ft.is_open())
	{
		cout << "文件打开失败" << endl;
		return 0;
	}
    //输出到屏幕
	cout << "奇数"<< nmbJs << "个"<< endl;
	cout << "偶数"<< nmbOs << "个"<< endl;
	cout << "水仙花数"<< nmbSxh << "个"<< endl;
    //写入文件
	ft << "奇数"<< nmbJs << "个"<< endl;
	ft << "偶数"<< nmbOs << "个"<< endl;
	ft << "水仙花数"<< nmbSxh << "个"<< endl;
	ft.close();
	return 0;
}