首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我编了一个程序有些有关问题,刚学C++不久,想请问一下

2012-02-17 
我编了一个程序有些问题,刚学C++不久,想请教一下我的程序是4*5矩阵,用new动态申请,做加减,不知道犯了什么

我编了一个程序有些问题,刚学C++不久,想请教一下
我的程序是4*5矩阵,用new动态申请,做加减,不知道犯了什么问题?
关于指针数组函数参数搭配问题很晕,高人可否讲一下?谢谢啦


#include       <iostream>
using   namespace   std;      
       
    void     print(int   array[][5]);
      void   add(int   *p1,int   *p2);
       
      main()      
    {      
    int       i,j     ;      
    int       **num1     =   new       int   *[5];       //保证所申请的内存空间与所需矩阵相符(有足够空间)    
     
    for(       i=0   ;i <5   ;i++       )      
          num1[i]       =       new       int[5];  
         
                   
 
         
        cout < < "请输入A1矩阵: " < <endl;
                         
    for(       i=0       ;       i <4   ;       i++       )      
    {      
    for(       j=0       ;       j <5;       j++       )      
     
              cin> >   num1[i][j];      
              cout < <endl       ;      
    }      
 
        int   s,t;            
                                     
        int       **num2       =   new       int   *[5];       //保证所申请的内存空间与所需矩阵相符(有足够空间)    
   
    for(       i=0   ;i <5   ;i++       )      
          num2[i]       =       new       int[5];                                                                
               
                cout < < "请输入A2矩阵: " < <endl;
                         
    for(       s=0   ;s <4   ;s++       )      
    {      
    for(       t=0;   t <5;   t++       )      
     
              cin> >   num2[s][t];      


              cout < <endl       ;   }
             
            add(num1,num2);     //此处错误,是不是我参数类型不搭配,显示C:\Documents   and   Settings\liuxiaochen\桌面\未命名3.cpp   cannot     convert   `int** '   to   `int* '   for   argument   `1 '   to   `void   add(int*,   int*) '              
               
                   
                   
   
  for(       i=0;i <4;i++       )      
    delete       []num1[i];
               
  delete       []num1   ;  
  delete   []num2;    
    cout < <endl       ;      
         
       
   

            system( "pause ");  
    }

  void     print(int   **p)
    {          
            int   i,j;    

            for(       i=0       ;       i <4       ;       i++       )            
    {      
            for(       j=0       ;       j <5       ;       j++       )      
       
                cout < <*(*(p+i)+j) < < "           "       ;      
    }      
    cout < <endl       ;      
    }      


void   add(int   **p1,int   **p2)
{        
        int   s;  
        int       **num3       =   new       int   *[5];       //保证所申请的内存空间与所需矩阵相符(有足够空间)    
    //cout < <sizeof(int**) < <endl       ;      
    for(       s=0   ;s <5   ;s++       )      
          num3[s]       =       new       int[5];  
         
         
          int   i,j;
          for(i=0;i <4;i++)
              for(j=0;j <5;j++)
                  **num3=*(*(p1+i)+j)+   *(*(p2+i)+j);
                 
                  cout < < "A1+A2是: " < <endl;


                  print(num3);
          }

[解决办法]
也是初学,好像声明 void add(int *p1,int *p2); 改成 void add(int **p1,int **p2);就OK了,VC6上测试通过!

[解决办法]
初看楼主的程序就觉得问题不少.
函数声明与实现形参不一致比如:void print(int array[][5]);void add(int *p1,int *p2);而实现却是void add(int **p1,int **p2),void print(int **p)
至于程序的逻辑没仔细看,代码太晦涩了(累呀!!)
[解决办法]
没看,类型肯定不对,

void add(int *p1,int *p2);
void add(int **p1,int **p2)都改成这个就对了

[解决办法]
ADD前置声明参数类型与ADD定义不匹配.

热点排行