文本模式向文件中存入质数

1、  输出文件由ofstream对象表示,创建方式:

ofstream outFile(“filename”);//名字可改

默认是文本模式,当打开filename文件时,如果filename不存在,就会用这个名称和路径创建一个文件。

要求:

(1)       输入需要计算的质数个数,从小到大依次计算出相应的质数(例如,输入需要计算的质数个数为4,那么计算结果为{2,3,5,7});

(2)       将(1)中的计算结果以文本模式输出到文件中,计算结果通过<<运算符写入文件,使用setw(10)控制输出格式;

提示:

判断质数的方法:

u  对正整数n,如果用2 根号n 之间的所有整数去除,均无法整除,则n为质数。

u  质数大于等于2 不能被它本身和1以外的数整除。

#include <iostream>

#include <iomanip>

#include <cmath>

#include <fstream>

#include <sstream>

#include <string>

#include <vector>

using namespace std;


int main()

{

int i, j, count = 0;

unsigned int n;

cout << "请输入需要计算的质数个数:";

cin >> n;


ofstream outFile("E:\prime_num.dat");

//创建输出流对象和文件

vector<int>prime_num;

//定义一个int型vector对象来存质数

for (i = 2; count < n; i++)

//i为需要判断是否为质数的数

//利用count计算以求质数个数

{

j = 2;

while (j <= sqrt(i))

{

if (i%j == 0) break;

//如果i能整除j,则退出while循环

j++;

}

if (j > sqrt(i))

//如果j比根号i大,其实这时已经说明i为质数

{

prime_num.push_back(i);

//存入质数i

count++;

}

}

for (auto &i : prime_num)

//范围for语句将质数写入文件

{

outFile << setw(10) << i;

}

cout << "已将所需质数输入文件!" << endl;

outFile.close();

//关闭文件

return 0;

}

2、输入文件由ifstream对象表示,创建方式:

ifstream inFile(“filename”);

输入文件时,需要检查文件流状态。1)使用inFile.is_open()2)对文件流使用!操作符( !inFile)

要求:

(1)       读取题目1的输出文本文件;

(2)       检查输入文件流状态,若文件打开失败则抛出并捕获异常;

(3)       输出文件的总长度(以字节计);

(4)       将读取到的数据在屏幕输出,要求使用setw()控制输出格式;

#include <cmath>

#include <sstream>

#include <iostream>

#include <vector>

#include <string>

#include <fstream>

#include <iomanip>

using namespace std;


int main()

{

int temp;//临时变量用于文件与屏幕输出的桥梁

ifstream inFile;

inFile.open("E:\prime_num.dat", ios::in);

try

{

if (!inFile)

throw ios_base::failure("");

inFile.seekg(0, ios::end);

//基地址为文件结束处,偏移地址为0,于是指针定位在文件结束处

streampos here = inFile.tellg();

//here为定位指针,因为它在文件结束处,所以也就是文件的大小

cout << "文件长度:" << here << endl;

inFile.seekg(0, ios::beg);

//基地址为文件头,偏移量为0,于是定位在文件头

while(inFile >> temp)

//逐个读取文件中字符,当然,空白不会读取

{

cout << setw(10) << temp;

}

}

catch (exception &e)

//捕获异常

{

cout << "Error:" << e.what() << endl;

}

inFile.close();

return 0;

}





你可能感兴趣的:(文本模式向文件中存入质数)