C++面向对象程序设计课程的作业,初学者,很多地方做的不好,欢迎指正。
题目要求:
用文件流方式完成下面操作:生成一个 6 × 6 的矩阵 A,其元素为[0,1]之间的双精度数。
(a) 将其按矩阵形式写入到一个文本文件 fout01.txt 中;
(b) 将其写入到一个二进制文件 fout01.dat 中;
(c) 再从文件 fout01.dat 中读取前 12 个数据(双精度),构成一个 2 × 6 的矩阵 B,并将 B 按行输出。
#include<iostream>
#include<fstream>
using namespace std;
//获取随机数
double GetRand()
{
int number = rand()%101;
return number/100.0;
}
int main()
{
int i,j;
//生成6*6个双精度数存入二维数组
double arr[6][6];
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
arr[i][j]=GetRand();
}
}
//按矩阵形式写入到一个文本文件 fout01.txt 中
fstream fstrm;
fstrm.open("fout01.txt",ios::out);
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
fstrm<<arr[i][j]<<" ";
}
fstrm<<endl;
}
fstrm.close();
//写入到一个二进制文件 fout01.dat 中
fstrm.open("fout01.dat",ios::out|ios::binary);
fstrm.write((char*)&arr,sizeof(arr));
fstrm.close();
//从文件 fout01.dat 中读取前 12 个数据(双精度),构成一个 2 × 6 的矩阵 B,并将 B 按行输出
double B[12];
fstrm.open("fout01.dat",ios::in|ios::binary);
fstrm.read((char*)&B,sizeof(B));
fstrm.close();
for(i=0;i<2;i++)
{
for(j=0;j<6;j++)
{
cout<<B[6*i+j]<<" ";
}
cout<<endl;
}
return 0;
}
文本文件 fout01.txt:
运行结果: