西安政法委吴智民:高手帮看下下面的程序为什么会RUNTIME ERROR啊

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 13:41:06
#include<stdio.h>
#include<stdlib.h>

int y[700],z[700];
double *k[700],x[700];

int cmp(const void* p1,const void*p2)
{
return *(double *)p1>*(double *)p2?1:-1;
}

int large(double *a,int c)
{
int sum=1,i,*b;
b = (int*) malloc(c*sizeof (int));
qsort(a,c,sizeof(double),cmp);

b[0]=1;
for(i=0;i<c;i++)
{b[i+1]=1; if(a[i+1]==a[i]) b[i+1]+=b[i];}
for(i=0;i<c;i++)
if(sum<b[i]) sum=b[i];
return sum+1;
free(b);
}

int main()
{
int time=0,n=0,i,j,m,t,timeofx;
while(scanf("%d",&n)!=EOF)
{
if(!n) break;
for(t=0;t<n;t++)
scanf("%lf %d",&x[t],&y[t]);

for(i=0;i<n-2;i++)
{
m=0;
k[i]=(double*)malloc((n-i-1)*sizeof(double));
for(j=i+1;j<n;j++)
if(x[i]!=x[j])
{
k[i][m]=(y[j]-y[i])/(x[j]-x[i]);
m++;
}
z[i]=large(k[i],m);
free(k[i]);

}
for(i=0;i<n;i++)
if(time<z[i]) time=z[i];
timeofx=large(x,n)-1;
printf("%d\n",(timeofx>time)?timeofx:time);

}
return 0;
}