| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2567 人关注过本帖
标题:[求助]如何用二维数组做函数的参数?
只看楼主 加入收藏
wangyou
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-5-1
收藏
 问题点数:0 回复次数:5 
[求助]如何用二维数组做函数的参数?

请帮我看看下面哪里出了问题
/*
计算杨辉三角形。
void yanghui(int t[][yhSize], int n)
其中t[yhSize][yhSize]二维数组用来存储杨辉三角形,
n是三角形层数。
void print(int t[][yhSize], int n)
*/
#include<iostream>
using namespace std;

void yanghui(int t[][], int n);
void print(int t[][], int n);

int main()
{
int n;
cout<<"请输入杨辉的层数:";
cin>>n;
int* s=new int[n][n];
s[0][0]=s[1][0]=s[1][1]=1;
for(int i=1;i<n;i++)
{
s[i][0]=1;
s[i][i]=1;
for(int j=1;j<i;j++)
s[i][j]=s[i-1][j-1]+s[i-1][j];
}
yanghui(s,n);
return 0;
}

void yanghui(int t[][], int n)
{
print(t,n);
}

void print(int t[][], int n)
{
for(int i=0;i<n;i++)
{
for(int m=1;m<=n-2*i;m++)
cout<<" ";
for(int j=0;j<=i;j++)
cout<<s[i][j];
cout<<endl;
}
}

搜索更多相关主题的帖子: 函数 参数 
2006-05-07 12:04
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 

adhkfhksdfhsdfjsdlfjslajdfldjfklflskiwoelajfojflwncvvnancvniwfnancnvw,nflnvncnvwklfwhfankhcvnnefkwnsn,x
cnvnn,xcnviwnnuifkwjenjkfakncviwnnvhfnwknjksnfkahkndknfwiefkwneehuhksnfkjsfniwuehfkwhkand,cnhusenwinfew
这样的问题犯的着传递一个二次的指针嘛
不用


http://kongfuziandlife. http://codeanddesign.
2006-05-07 13:02
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
楼主,问题很大呀
说关键的吧
多维数组做参数
需要把除了最高维以外的维数传过去
例如三维 就要这么传s[(最高维才可省略)][3][3];
这样系统才能有序的给你分配空间

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-07 13:05
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

兄弟,你在啊


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-07 13:37
naughtyboy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-8-5
收藏
得分:0 
那接受的函数是不是也要声明 除最高维的参数
void Func(int a[][i]) /// int a[][3] 可以通过
{
................
}
void main()
{
a[2][3];
Func(a);
}

这样好像是不行的
那怎么样动态的传二维数组呢?
我现在只知道用 int ** a 的办法,
但是 这样的话 还要先 一个个构造 a ,比较麻烦。。。。。



2006-10-26 23:07
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
wangyou,
你的代码我就不改了, 你的问题其实就是如何动态开辟二维空间的问题, 这个问题在C++ 学习者中是每个人都会遇到的, 针对这个问题我写了一个 Demo code, 希望对你以及对大家会有一些帮助。
[CODE]
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int rows = 2;
int cols = 3;

// create a dynamic array
int ** array = NULL;
array = new int * [rows];


for(int i = 0; i < rows; i++)
{
array[i] = new int[cols];

// init this 2d array
for(int j = 0; j<cols; j++)
{
array[i][j] = (i+1)*(j+1);
}
}


// to check what we have done
for(int i = 0; i < rows; i++)
{
for(int j = 0; j<cols; j++)
{
cout<<array[i][j]<<" ";
}
cout<<endl;
}

// before you leave the program
// you should release the space what you have dynamically allocated
// to delete the allocation
for(int i = 0; i<rows; i++)
{
delete [] array[i];
array[i] = NULL; // to avoid wild pointer
}

delete [] array;
array = NULL; // to avoid wild pointer

system("pause");
return 0;
}

[/CODE]

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-10-27 04:56
快速回复:[求助]如何用二维数组做函数的参数?
数据加载中...
 
   



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

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