| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1832 人关注过本帖
标题:纠结了,c++的指针指向矩阵
只看楼主 加入收藏
fishviv
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2010-9-10
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:3 
纠结了,c++的指针指向矩阵
编写C++程序完成以下功能:
用类来实现矩阵,定义一个矩阵的类,属性包括:
矩阵大小,用 lines, rows(行、列来表示);
存贮矩阵的数组指针,根据矩阵大小动态申请(new)。
矩阵类的方法包括:
构造函数,参数是矩阵大小,需要动态申请存贮矩阵的数组;
析构函数,需要释放矩阵的数组指针;
拷贝构造函数,需要申请和复制数组;
输入,可以从cin中输入矩阵元素;
输出,将矩阵格式化输出到cout;
矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵类,但必须矩阵大小相同;
矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵类,但必须矩阵大小相同。
定义三个矩阵:A1、A2、A3;
初始化A1、A2;
计算并输出A3 = A1加A2,A3=A1减A2;
用new动态创建三个矩阵类的对象:pA1、pA1、pA3;
初始化pA1、pA2;
计算并输出pA3=pA1加pA2,pA3=pA1减pA2;
释放pA1、pA1、pA3。

看一下下这个吧,题目都读不懂,麻烦了

[ 本帖最后由 fishviv 于 2010-9-11 08:58 编辑 ]
搜索更多相关主题的帖子: 指针 矩阵 纠结 
2010-09-10 13:03
fishviv
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2010-9-10
收藏
得分:0 
程序代码:
#include<iostream>
using namespace std;

class  juzhen
{
    public:
        juzhen (int l,int r){line=l;row=r; }//构造函数
        juzhen(juzhen*ju){line=ju->line;row=ju->row;p=ju->p;}//****************************88拷贝构造函数
         void input(juzhen* Pju);//赋值函数
        void output(juzhen* Pju);//输出函数
        void add(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3) ;//计算两矩阵之和
        void minu(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3);//计算两矩阵之差
        ~juzhen(){delete[] p;}//析构函数
    private:
        int line,row;//矩阵大小属性
        int (*p)[10];//指向矩阵的指针
};
void juzhen::input(juzhen* Pju)
{   int i,j;

 
    int (*p1)[10]=new int[line][10];
    Pju->p=p1;//给指针一个地址
    cout<<" 请依次输入矩阵的值"<<endl;
    for(i=0;i<line;i++)
     for(j=0;j<row;j++)
        {  //cin>>*(*(Pju->p+i)+j); //逐个输入矩阵中的每一个元素
            *(*(Pju->p+i)+j)=1;//依次赋值
        }
    Pju->output(Pju);//输出各矩阵

      
} 
void juzhen::output(juzhen* Pju)
{  int i,j;
    
    for(i=0;i<line;i++)
     {  for(j=0;j<row;j++)
             cout<<*(*(Pju->p+i)+j)<<"    ";//逐个输出矩阵中的每一个元素
         cout<<endl; //每输完一行就换行
    }
}
void juzhen::add(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3) //计算两矩阵之和
{  int i,j;
    
   for(i=0;i<line;i++)
     for(j=0;j<row;j++)
      *(*(Pju3->p+i)+j)=*(*(Pju1->p+i)+j)+*(*(Pju2->p+i)+j);//计算每一个新矩阵中的元素值
  Pju3->output(Pju3); //输出新矩阵
} 
void juzhen::minu(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3)//计算两矩阵之差
{  int i,j;
   for(i=0;i<line;i++)
     for(j=0;j<row;j++)
      *(*(Pju3->p+i)+j)=*(*(Pju1->p+i)+j)-*(*(Pju2->p+i)+j);//计算每一个新矩阵中的元素值
  Pju3->output(Pju3); //输出新矩阵
} 
int main()
{   int l,r;
   
    cout<<"请输入矩阵的行列"<<endl;
    cin>>l>>r;
    juzhen* Ptr1=new juzhen(l,r);
    juzhen* Ptr2=new juzhen(l,r);
    juzhen* Ptr3=new juzhen(l,r);//动态给矩阵申请空间
    Ptr1->input(Ptr1);
    Ptr2->input(Ptr2);
    Ptr3->input(Ptr3); //各个赋值

    cout<<"A3=A1+A2 :"<<endl;
    Ptr1->add (Ptr1,Ptr2,Ptr3);//计算两矩阵之和
    cout<<"A3=A1-A2 :"<<endl;
    Ptr1->minu (Ptr1,Ptr2,Ptr3);//计算两矩阵之差
    
      system("pause");
    return 0; 

这是我刚刚调出来的,不知道是否符合题意?各位看看,说说两句吧。
2010-09-10 19:29
staor
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2010-9-5
收藏
得分:20 
大部分合符,
最后题意说是定义三个矩阵:A1、A2、A3;
初始化A1、A2;
计算并输出A3 = A1加A2,A3=A1减A2;

用new动态创建三个矩阵类的对象:pA1、pA1、pA3;
初始化pA1、pA2;
计算并输出pA3=pA1加pA2,pA3=pA1减pA2;
有点不同..

2010-09-11 01:48
fishviv
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2010-9-10
收藏
得分:0 
回复 3楼 staor
可是,这个怎么弄啊,定义三个矩阵之后,怎么调用那些输入输出函数啊?
2010-09-11 08:56
快速回复:纠结了,c++的指针指向矩阵
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021847 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved