不固定矩阵转置C++通用代码实现.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
不固定矩阵转置 C++通用代码实现 二进制文件 matrices.dat 中的各矩阵数据存储顺序格式如下: 1)首先的 4 个字节以整数( int )格式存储矩阵数目; 2)接着的 4 个字节以整数( int)格式存储第一个矩阵行数 m, 然后的 4 个字节以整数( int )格式存储第一个矩阵列数 n,随后依次 存储第一个矩阵各个元素(顺序是: a11, a12, ? a1n, a21, a22, ? a2n, ? am1, am2, ? amn),共计 m*n 个双精度实数( double),占 8*m*n 个字节; 3)接着存储的就是第二个矩阵的数据, 格式同前一矩阵,即 4个 字节以整数( int)格式存储该矩阵行数,再 4 个字节以整数( int )格 式存储该矩阵列数,紧接着以双精度实数( double)格式存储该矩阵 各个元素,以此类推存储各个矩阵数据。将各矩阵数据(行数、列数 和各个元素值)读入内存, 然后转置各矩阵,再将各转置后矩阵数据 依原来从文件读入顺序写回文件,覆盖原来的内容。 #includeiostream #includefstream #includeiomanip using namespace std; class rect1 { private: } } public: int M,N; double **a; void setrect1(int m, int n,double **p) { //a=new double [m][n]; a = new double* [m]; a[0] = new double[m * n]; // 一次性分配所有空间 for(int ii=1; iim; ii++) { a[ii] = a[ii-1] + n; // 分配每个指针所指向的数组 } M=m; N=n; coutM\tN\tendl; for (int i=0;im;i++) { for (int j=0;jn;j++) { a[i][j]=p[i][j]; coutsetw(6)a[i][j] coutendl; }; } rect1() {}; ~rect1 () { if (a) { delete[] a[0]; delete[] a; } } }; int main() { int num; rect1 tmpr1; int tmpn,tmpm; double **tmpp; ifstream infile(matrices2.dat,ios::in|ios::binary); if(!infile) { coutfailed!endl; exit(0); } infile.read((char*)num,sizeof(int)); coutnumendl; rect1 *r1; r1=new rect1[num]; for(int i=0;inum;i++) { infile.read((char*)tmpm,sizeof(int)); infile.read((char*)tmpn,sizeof(int)); //pp=new double [tmpm][tmpn]; tmpp=new double * [tmpm]; // 分配指针数组 for(int iii=0; iiitmpm; iii++) { tmpp[iii] = new double[tmpn]; // 分配每个指针所指向的 数组 } for(int i1=0;i1tmpm;i1++) for(int j1=0;j1tmpn;j1++) infile.read((char*)tmpp[i1][j1],sizeof(double)); tmpr1.setrect1(tmpm,tmpn,tmpp); r1[i]=tmpr1; delete[] tmpp[0]; delete[] tmpp; } infile.close(); ofstream ofile(matrices2.dat,ios::out|ios::binary); if(!ofile) { coutfailed!endl; exit(0); } ofile.write((char*)num,sizeof(int)); for(int k=0;knum;k++) { ofile.write((char*)r1[k].N,sizeof(int)); //coutr1[k].M\t; ofile.write((char*)r1[k].M,sizeof(int)); //coutr1[k].Nendl; for(int i2=0;i2r1[k].N;i2++) { { } } for(int j2=0;j2r1[k].M;j2++) ofile.write((c

文档评论(0)

capt + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档