注册 登录
编程论坛 C++教室

[求助]实现findmax()函数

六道 发布于 2007-10-16 14:15, 1296 次点击

红色是题目给出的,编程实现findmax()函数,寻找数组最大元素.该元素的下标通过参数返回,并返回其地址值.
#nclude<iostream.h>

int *findmax(int *array,int size,int *index);
void main()
{
int a[10]={33,91,54,67,82,37,85,63,19,68};
int *maxaddr;
int idx;

maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);

cout<<"the index of maximum element is "<<idx<<endl
<<"the address of it is "<<maxaddr<<endl
<<"the value of it is "<<a[idx]<<endl;
}

int *findmax(int *array,int size,int *index)
{
int max=0,idx;
size=sizeof(array)/sizeof(int);
for((*index)=0;(*index)<size;(*index)++)
if(array[*index]>max)
max=array[*index];
idx=*index;
return 0;
}

上面是我写的,是否符合题意?程序是否正确?

6 回复
#2
nuciewth2007-10-16 14:34
找最大值为什么要返回指针.
计算数组元素个数size=sizeof(a)/sizeof(int)
对定义为a[]={1,2,...};这样的计算.如果a已经是a[10] ,那不就是10了.
还有
求最大者要么返回这个数,要么就返回这个元素的位置.参数不用这么复杂的.
#3
永夜的极光2007-10-16 14:44

楼主是不是把论坛当成编译器了

为什么不放VC里面自己调试一下呢?

#4
六道2007-10-16 15:39
以下是引用nuciewth在2007-10-16 14:34:03的发言:
找最大值为什么要返回指针.
计算数组元素个数size=sizeof(a)/sizeof(int)
对定义为a[]={1,2,...};这样的计算.如果a已经是a[10] ,那不就是10了.
还有
求最大者要么返回这个数,要么就返回这个元素的位置.参数不用这么复杂的.

题目是这么要求的~函数声明都是已给出的~只是具体没定义~
回答3楼的朋友,我调试过了,可以运行出结果~这里只是想问下我写的是否达到了题目的要求(返回最大值下标和下标的地址).

还是谢谢2位帮忙~

#5
nuciewth2007-10-16 15:47
如果真的这样,我也不想这样写.
#6
nuciewth2007-10-16 15:49
int *findmax(int *array,int size,int *index)
{
int i,k=0;
*index=array[0];
for(i=1;i<size;i++)
{
if(*index<array[i])
{
*index=array[i];
k=i;
}
}
return k;
}
#7
六道2007-10-16 15:54
以下是引用nuciewth在2007-10-16 15:49:31的发言:
int *findmax(int *array,int size,int *index)
{
int i,k=0;
*index=array[0];
for(i=1;i<size;i++)
{
if(*index<array[i])
{
*index=array[i];
k=i;
}
}
return k;
}

这样看起来是舒服~呵呵~~~

1