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

求高手帮找bug解决方案

2012-03-25 
求高手帮找bug这是一个求鞍点的函数(鞍点就是在它所在的行跟列都是最大的数),我算法的思想是先找出某一行

求高手帮找bug
这是一个求鞍点的函数(鞍点就是在它所在的行跟列都是最大的数),我算法的思想是先找出某一行的最大的数,然后再用它跟它所在列所有的数相比,如果它还是最大的数的话,那它就是鞍点,函数如下:

void andian(int (* aptr)[MAXLINE])
{
  int (* ptr)[MAXLINE]=aptr;
  int i,j,k,n;
  for(i=0;i<MAXLINE;i++)
  {
  j=0;
for(k=0;k<MAXLINE;k++)
{
if((*(*(ptr+i)+j))<(*(*(ptr+i)+k)))
{
j=k;
}
}
n=1;
for(k=0;k<MAXLINE;k++)
{
if((*((*(ptr+i))+j))>(*((*(ptr+k))+j)))
n++;
else break;
}
if(n==MAXLINE)
printf("鞍点找到了!!他的行标为%d,列标为%d,数值为%d\n",i+1,j+1,*(*(ptr+i)+j));
  }
}

[解决办法]

C/C++ code
void andian(int (* aptr)[MAXLINE]){    int (* ptr)[MAXLINE]=aptr;    int i,j,k,n;    for(i=0;i<MAXLINE;i++)    {        j=0;        for(k=0;k<MAXLINE;k++)        {            if((*(*(ptr+i)+j))<(*(*(ptr+i)+k)))            {                j=k;            }        }        n=0;        for(k=0;k<MAXLINE;k++)        {            if((*((*(ptr+i))+j))>(*((*(ptr+k))+j)) || k==j)                n++;            else                break;        }        if(n==MAXLINE)            printf("鞍点找到了!!他的行标为%d,列标为%d,数值为%d\n",i+1,j+1,*(*(ptr+i)+j));    }}
[解决办法]
举个例子
C/C++ code
#include <stdio.h>void find_saddle_point(int a[3][3]){    int i, j;    for (i = 0; i < 3; i++)    {        int *tmp = &a[i][0];        int saddlepoint = 0;        for (j = 0; j < 3; j++)        {            if (saddlepoint < tmp[j])            {                saddlepoint = tmp[j];            }        }                printf("%d\n", saddlepoint);    }}int main(void){    int a[3][3] = {1,3,5,23,4,6,7,8,3};        find_saddle_point(a);    return 0;} 

热点排行