1、用文件流方式完成下面操作:生成一个6X6的矩阵A,其元素为[0,1]之间的双精度数。
(a) 将其按矩阵形式写入到一个文本文件fout01.txt中;
(b) 将其写入到一个二进制文件fout01.dat中;
(c) 再从文件fout01.dat中读取前12 个数据(双精度),
构成一个2X6的矩阵B,并将B 按行输出。 (程序取名hw15_01.cpp)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int N=6;
int main()
{
fstream fstrm;
double A[N][N];
int i, j;
// 生成矩阵
srand(time(0));
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
A[i][j] = static_cast<double>(rand()) / RAND_MAX;
// 在屏幕上输出数据
cout << "A:" << endl;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
cout << A[i][j] << ' ';
}
cout << endl;
}
fstrm.open("fout01.txt");
// 写入到文本文件中
if (!fstrm.is_open()) {
cerr << "Failed to open file fout01.txt" << endl;
return 1;
}
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
fstrm<<A[i][j];
if (j < N - 1) fstrm << ' ';
}
fstrm << endl;
}
fstrm.close();
// 写入到二进制文件中
fstream fstrm2("fout01.dat",ios::out|ios::binary);
if (!fstrm2.is_open()) {
cerr << "Failed to open file fout01.dat" << endl;
return 1;
}
fstrm2.write((char *)A, sizeof(A));
fstrm2.close();
// 从二进制文件中读取数据
double B[2][6];
fstrm2.open("fout01.dat", ios::in|ios::binary);
if (!fstrm2.is_open()) {
cerr << "Failed to open file fout01.dat for reading" << endl;
return 1;
}
fstrm2.read((char *)B, sizeof(B));
fstrm2.close();
cout << "B:" << endl;
// 在屏幕上输出数据
for (i = 0; i < 2; i++) {
for (j = 0; j < 6; j++) {
cout << B[i][j] << ' ';
}
cout << endl;
}
return 0;
}
随机数生成参考:C++ rand 与 srand 的用法
Post Views: 9