CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

请帮我看一下这个排序

楼主eagleteaglet(eaglet)2005-04-03 21:32:54 在 C/C++ / C++ 语言 提问

我希望的是   按照switch排序,*switch指向的unsigned   char里的值是3,1,2,4,2,3  
  做出的结果总是不对,不知道怎么回事。  
   
  请高手帮我看一下吧。多谢了。  
   
  #include     <stdio.h>  
  #include     <stdlib.h>  
  #include     <string>  
  #include     <iostream>  
   
  using   namespace   std;  
   
  typedef   struct   {  
          char*     wave;  
          unsigned   char*     switch;  
          int   test;  
  }   Reserve;  
   
  //   compare   swtich  
  int   swtichcmp(const   Reserve   *x,   const   Reserve   *y)  
  {  
          return   (strcmp((char*)x->switch,   (char*)y->switch));  
  }  
   
  //compare   test       small->large  
  int   testcmp(const   Reserve   *x,   const   Reserve   *y)  
  {  
          return   (x->test   <   y->test   ?   -1   :     x->test   <   y->test   ?     1   :   0);  
  }  
   
   
  void   print_Reserve(Reserve   x)  
  {  
          printf("%-10.10s   %-10.10s   %d\n",   x.wave,   x.swtich,   x.test);  
  }  
   
  int   main(int   argc,   char   *argv[])  
  {  
          int     i;  
          unsigned   char   xp[]   =   {'3',   '1',   '2','4','2','3'};  
          unsigned   char*   b=xp;  
   
        Reserve   x[]=   {{"3",   b   ,   52},  
                                    {"4",   (b+4),   22},  
                                    {"5",   (b+8),   48},  
                                    {"2",   (b+3),   42},  
                                    {"7",   (b+4),   54},  
                                    {"6",   (b+5),   55},  
                                  };  
   
          int     nx   =   sizeof(x)   /   sizeof(x[0]);  
   
          cout   <<   "Before   sort   "   <<   endl;  
          for   (i   =   0;   i   <   nx;   i++)  
                  print_Reserve(x[i]);  
   
  //sort   swtich  
          qsort(x,   nx,   sizeof(Reserve),   (int(*)(const   void*,   const  
  void*))swtichcmp);  
   
          cout   <<   "After   sorting   by   switch   "   <<   endl;  
          for   (i   =   0;   i   <   nx;   i++)  
                  print_Reserve(x[i]);  
   
  //sort   test  
          qsort(x,   nx,   sizeof(Reserve),   (int(*)(const   void*,   const  
  void*))testcmp);  
   
          cout   <<   "After   sorting   by   test   "   <<   endl;  
          for   (i   =   0;   i   <   nx;   i++)  
                  print_Reserve(x[i]);  
   
          return   (0);  
  }  
   
   
  问题点数:20、回复次数:5Top

1 楼arrowcy(长弓手)回复于 2005-04-03 21:53:47 得分 20

怎么用switch?不要随便用这些关键字做变量名阿Top

2 楼arrowcy(长弓手)回复于 2005-04-03 21:54:32 得分 0

怎么用switch?不要随便用这些关键字做变量名阿Top

3 楼arrowcy(长弓手)回复于 2005-04-03 21:57:24 得分 0

我在vc里面试运行这个程序,结果错误一大堆,其中第一个错误就是那个switch,建议你先把这些错误修改了再说吧,如果修改过程中遇到什么困难再上来问也可以的Top

4 楼eagleteaglet(eaglet)回复于 2005-04-04 10:18:40 得分 0

#include     <stdio.h>  
  #include     <stdlib.h>  
  #include     <string>  
  #include     <iostream>  
   
  using   namespace   std;  
   
  typedef   struct   {  
          char*     wave;  
          unsigned   char*     wavetime;  
          int   test;  
  }   Reserve;  
   
  //   compare   wavetime  
  int   swtichcmp(const   Reserve   *x,   const   Reserve   *y)  
  {  
          return   (strcmp((char*)x->wavetime,   (char*)y->wavetime));  
  }  
   
  //compare   test       small->large  
  int   testcmp(const   Reserve   *x,   const   Reserve   *y)  
  {  
          return   (x->test   <   y->test   ?   -1   :     x->test   <   y->test   ?     1   :   0);  
  }  
   
   
  void   print_Reserve(Reserve   x)  
  {  
          printf("%-10.10s   %-10.10s   %d\n",   x.wave,   x.swtich,   x.test);  
  }  
   
  int   main(int   argc,   char   *argv[])  
  {  
          int     i;  
          unsigned   char   xp[]   =   {'3',   '1',   '2','4','2','3'};  
          unsigned   char*   b=xp;  
   
        Reserve   x[]=   {{"3",   b   ,   52},  
                                    {"4",   (b+4),   22},  
                                    {"5",   (b+8),   48},  
                                    {"2",   (b+3),   42},  
                                    {"7",   (b+4),   54},  
                                    {"6",   (b+5),   55},  
                                  };  
   
          int     nx   =   sizeof(x)   /   sizeof(x[0]);  
   
          cout   <<   "Before   sort   "   <<   endl;  
          for   (i   =   0;   i   <   nx;   i++)  
                  print_Reserve(x[i]);  
   
  //sort   wavetime  
          qsort(x,   nx,   sizeof(Reserve),   (int(*)(const   void*,   const  
  void*))swtichcmp);  
   
          cout   <<   "After   sorting   by   wavetime   "   <<   endl;  
          for   (i   =   0;   i   <   nx;   i++)  
                  print_Reserve(x[i]);  
   
  //sort   test  
          qsort(x,   nx,   sizeof(Reserve),   (int(*)(const   void*,   const  
  void*))testcmp);  
   
          cout   <<   "After   sorting   by   test   "   <<   endl;  
          for   (i   =   0;   i   <   nx;   i++)  
                  print_Reserve(x[i]);  
   
          return   (0);  
  }  
   
  这次应该没什么问题了。但输出的不是我所希望的Top

5 楼eagleteaglet(eaglet)回复于 2005-04-05 20:58:54 得分 0

我的那些准师父们为啥没有帮我的呢Top

相关问题

  • 请帮助菜鸟:DataView无法排序,大家请帮忙看一下代码!!
  • 一个排序很奇怪的问题,请高手帮我看一下。
  • 请帮忙看一下。
  • 请帮我看一下
  • 请帮忙看一下!
  • 请帮忙看一下
  • 请帮忙看一下
  • 请帮我看一下。
  • 请人帮忙看一下
  • 排序不能成功?帮忙看一下!

关键词

  • xp
  • s%
  • wavetime
  • reserve
  • wave
  • unsigned
  • switch
  • compare
  • const
  • test

得分解答快速导航

  • 帖主:eagleteaglet
  • arrowcy

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo