| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:这个程序的实参和行参我分不清啊,高手帮我分析下,谢谢
只看楼主 加入收藏
新手上路中
Rank: 4
等 级:业余侠客
帖 子:49
专家分:204
注 册:2010-3-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
这个程序的实参和行参我分不清啊,高手帮我分析下,谢谢
#include"iostream.h"
#include"iomanip.h"
#define N 100                      //定义数组容量

int sanjie(int **c)
{
     int b[3][6];
     int m=1,n=1,sz=0,sf=0;
     int i,j,k;
     for(i=0;i<3;i++)                                 //先把数组a分2次复制到数组b中去
           for(j=0;j<3;j++)
           {
                 b[i][j]=*(*(c+i)+j);
                 b[i][j+3]=*(*(c+i)+j);                     
           }

                              
           for(j=0;j<3;j++)                    //分别计算出主对角线和副对角线的值并相减
           {
                 for(k=0;k<3;k++)                      //先算出每条对角线的乘积
                 {
                         m*=b[k][j+k];
                         n*=b[k][5-j-k];           
                 }   
                 sz+=m;                                 //再把它们加起来,减一下就得到最终的结果了
                 sf+=n;
                 m=1;
                 n=1;
           }     
     return sz-sf;                //返回目标
}


void main()
{
     int i=0,j=0,k=0,m=1;
     int h1=0;            //行列式的行与列
     int a[N][N];
     int **pa=0;


     cout<<"本程序只能处理行列都小于100,元素小于100的行列式,请见谅"<<endl;
     cout<<endl;         
     
s1:  cout<<"请输入行列式的行列数,并按回车结束:"<<endl;              //输入行列式的大小
     cin>>h1;
     if(h1>N && h1<1)                              //下标越界处理
     {
          cout<<"下标越界,请重新输入"<<endl;
          goto s1;
     }

     cout<<"请输入行列式的元素,一行一行自上而下地输入,并按回车结束:"<<endl;       //输入行列式的元素
     while(i<h1*h1)
     {           
a:           cin>>j;
           if(j>=100 && j<=-100)                                       //元素的数值不能超过100
           {
                  cout<<"数值越界,请重新输入"<<endl;
                  goto a;
           }
           a[i/h1][i%h1]=j;
           i++;     
     }
     i=0;
     cout<<"输入完毕,计算中……"<<endl;
     if(h1==2)cout<<"该行列式最终结果为:"<<a[0][0]*a[1][1]-a[1][0]*a[0][1]<<endl;
     else   
     {        
              pa=a;
              m=sanjie(pa);
              cout<<"该行列式最终结果为:"<<m<<endl;

}
下面是错误:
--------------------Configuration: 计算行列式 - Win32 Debug--------------------
Compiling...
计算行列式.cpp
F:\程序\VC++\源程序\计算行列式.cpp(70) : error C2440: '=' : cannot convert from 'int [100][100]' to 'int ** '
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\程序\VC++\源程序\计算行列式.cpp(75) : fatal error C1004: unexpected end of file found

[ 本帖最后由 新手上路中 于 2010-3-26 23:42 编辑 ]
搜索更多相关主题的帖子: 复制 include 
2010-03-26 23:39
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:20 
int a[N][N];
     int **pa=0;
int (*pa)[N]=a;    //用指向数组的指针,,
形参也该了,int (*c)[N];
最后少了一个分号。。错误都指出来了,学会自己调试。。

离恨恰如春草,更行更远还生。
2010-03-27 00:12
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
C++尽量不要写那么复杂! 再者 少用goto 多用函数嵌套!
2010-03-27 08:58
快速回复:这个程序的实参和行参我分不清啊,高手帮我分析下,谢谢
数据加载中...
 
   



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

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