毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

C++类模板实现所谓的反序输出问题

更新时间:2011-5-3:  来源:毕业论文

C++类模板实现所谓的反序输出问题
需求分析: 编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题,其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化)。

 
6.2程序执行的结果:
 
6.3概要设计:


本程设计思路: 或得用户输入的数据保存与一个数组中,然后从数组末尾向前输出数组数据实现倒叙输出。


程序流程图(如左图):
 

6.3   详细设计与编码:
见上传程序。
 
6.4  调试分析:
     本题难度不大,关键在于对模板的理解,泛型编程越来越受到人们的总是,他将C++的性能发挥到极致,需要很高的技巧,这里利用模板来实现对不同类型数据和不定数量的数据的逆向输出,给人以很大启发。


6.5   用户使用说明:
     用户可以输入任意类型和数量的数据,程序逆向输出。

6.6 设计心得:
本题加深了我对模板的理解,是我加深了对C++的理解。
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{
 int n;
 cout<<"请输入矩阵的阶数:";
 cin>>n;
 cout<<"您定义的矩阵共有"<<n*n<<"个元素!"<<endl;
 int i,j,k;
 double **a=new double*[n];                         //分配二维数组的大小,矩阵为double型的
 for(i=0;i<n;i++)
  a[i]=new double[2*n];                          //分配每一行数组的大小
 cout<<"请输入要求逆矩阵的矩阵的元素!"<<endl;
 cout<<"注意:请您每输入一个元素,按一次Enter键!"<<endl;
 int b=0;
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  {
   cout<<"第"<<++b<<"个元素为:";                 //用户输入矩阵元素
   cin>>a[i][j];
  }
 cout<<"您输入的矩阵为:"<<endl;
 for(i=0;i<n;i++)
 {
  for(j=0;j<n;j++)
   cout<<a[i][j]<<" ";                         //将矩阵元素反馈给用户
  cout<<endl;
 }
 for(i=0;i<n;i++)
  for(j=n;j<2*n;j++)                                //将矩阵有半部分置为单位阵
  {
   int c=j-n;
   if(c==i)
    a[i][j]=1;
   else
    a[i][j]=0;
  }
 cout<<"在原矩阵右边加上单位阵后所得矩阵为:"<<endl;
 for(i=0;i<n;i++)
 {
  for(j=0;j<2*n;j++)
   cout<<a[i][j]<<" ";
  cout<<endl;
 }
 cout<<endl;
 cout<<"记原矩阵为A,A加上单位阵后所得的矩阵为B!"<<endl;           
 for(i=0;i<n-1;i++)
 {
  for(j=i+1;j<n;j++)                               //将矩阵A变为上三角矩阵
  {
   double d=a[j][i];
   for(k=i;k<2*n;k++)
    a[j][k]-=a[i][k]*d/a[i][i];
  }
 }
 cout<<"将矩阵B中的矩阵A变成上三角矩阵后,B变为:"<<endl;
 for(i=0;i<n;i++)
 {
  for(j=0;j<2*n;j++)
   cout<<a[i][j]<<" ";
  cout<<endl;
 }
 cout<<endl;
 for(i=0;i<n;i++)
 {
  double f=a[i][i];
  for(j=0;j<2*n;j++)
   a[i][j]=a[i][j]/f;                          //将矩阵A对角线元素置1
 }
 
 if(a[n-1][n-1]==0)                                 //判断矩阵是否有逆矩阵
 {
  cout<<"此矩阵没有逆矩阵!"<<endl;
  exit(1);
 }
 
 cout<<"将矩阵B中的矩阵A的对角线元素都置1后,B变为:"<<endl;
    for(i=0;i<n;i++)
 {
原文请找腾讯752018766六,维-论'文.网http://www.lwfree.cn  cout<<endl;
 for(i=0;i<n-1;i++)
原文请找腾讯752018766六,维-论'文.网http://www.lwfree.cn 一步将A置为单位阵  }
 

 cout<<"将矩阵B中的矩阵A变为单位阵后,B变为:"<<endl;
    for(i=0;i<n;i++)
 {
  for(j=0;j<2*n;j++)
   cout<<a[i][j]<<" ";
  cout<<endl;
 }
 cout<<endl;
 cout<<"所以,矩阵A的逆矩阵即所求矩阵为:"<<endl;
 cout<<fixed<<setprecision(6);                              //精确结果
 for(i=0;i<n;i++)
 {
  for(j=n;j<2*n;j++)
   cout<<a[i][j]<<" ";                               //输出逆矩阵
  cout<<endl;
 }
 cout<<endl;}1812

C++类模板实现所谓的反序输出问题下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。