沈阿清 2021-06-21 16:57 采纳率: 50%
浏览 12

麻烦大佬们,qsort报这个错应该怎么改

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<math.h>

const int MaxN=31;

const double Zero=0.0001;

struct sign{

 int bsszName,distance;

}signList[MaxN];

char bssz[MaxN][MaxN];

int cmp(const *a1,const *b1){

 sign *a=(struct sign*)a1;

 sign *b=(struct sign*)b1;

 if(a->distance>b->distance) return 1;

 else if(a->distance==b->distance) return strcmp(bssz[a->bsszName],bssz[b->bsszName]);

 else return -1;

}

int main()

{

 double path[MaxN][MaxN],graph[MaxN][MaxN];

 int shortPath[MaxN][MaxN],cases,bsszLocation[MaxN];

 scanf("%d",&cases);

 int iCase;

 for(iCase=1;iCase<=cases;iCase++){

  int i,j,k,a,b,m,n,cross;

  double d;

  char name[MaxN];

  scanf("%d%d%d",&n,&m,&cross);

  memset(graph,0,sizeof(graph));

  memset(bsszLocation,255,sizeof(bsszLocation));

  for(i=1;i<=m;i++){

   scanf("%d%d%lf",&a,&b,&d);

   graph[a][b]=graph[b][a]=d;

  }

  for(i=0;i<cross;i++){

   scanf("%d",&a);

   bsszLocation[a]=i;

   scanf("%signNum",name);

   strcpy(bssz[i],name);

  }

  memcpy(path,graph,sizeof(graph));

  for(k=0;k<n;k++){

   for(i=0;i<n;i++){

    if(path[i][k]>Zero){

     for(j=0;j<n;j++){

      if(path[k][j]>Zero&&i!=j){

       d=path[i][k]+path[k][j];

       if(path[i][j]<Zero||path[i][j]>d) path[i][j]==d;

      }

     }

    } 

   }

  }

  for(i=0;i<n;i++) path[i][i]=0;

  memset(shortPath,255,sizeof(shortPath));

  for(i=0;i<n;i++){

   for(j=0;j<n;j++){

    if(bsszLocation[j]>=0){

     for(k=0;k<n;k++){

      if(graph[i][k]>=Zero&&fabs(path[i][j]-path[k][j]-graph[i][k])<Zero){

       shortPath[i][j]=k;break;

      }

     }

    }

   }

  }

  if(iCase!=1) printf("\n");

  int listNum,signNum;

  scanf("%d",&signNum);

  for(i=0;i<signNum;i++){

   scanf("%d%d%lf",&a,&b,&d);

   if(i!=0) printf("\n");

   listNum=-1;

   for(j=0;j<n;j++){

    if(bsszLocation[j]>=0&&shortPath[a][j]==b){

     signList[++listNum].bsszName=bsszLocation[j];

     signList[listNum].distance=int(path[a][j]-d+Zero+0.5);

    }

   }

   qsort(signList,listNum+1,sizeof(sign),&cmp);

   for(j=0;j<listNum;j++){

    printf("%-20s",bssz[signList[j].bsszName])

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 16:21
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog