全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:826
推到 Plurk!
推到 Facebook!

我的qsrot怪怪的~~不太對

答題得分者是:taishyang
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-02 13:18:48 IP:140.124.xxx.xxx 未訂閱
 
const int number=10; 
//Beging of sort_function===
int sort_function( const void *a, const void *b)
{
  return( strcmp((char *)a,(char *)b) );
}
//Ending of sort_function===    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a[number]={0};
  for(int i=0;iLines->Strings[i])!="")
    {
      a[i]=StrToInt(Memo1->Lines->Strings[i]);
    }
  }
  
  //Beging of qsort===
  int sort_function( const void *a, const void *b);
  qsort(a,number, sizeof(int), sort_function);
  for(int i=0; iLines->Add(IntToStr(a[i]));
  }
  //Ending of qsort===                                      
}
如果輸入三位數字的話,就會不對~到底哪裡錯了??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-02 14:11:05 IP:140.135.xxx.xxx 未訂閱
黑輪您好: 要改成這樣
int sort_function( const void *a, const void *b)
{
  return (*(int*)a - *(int*)b);
}
假設您輸入三位數,很容易超出char的範圍 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-02 14:11:37 IP:61.221.xxx.xxx 未訂閱
引言:
 
const int number=10; 
int sort_function(const void *a, const void *b);    //Beging of sort_function===
int sort_function(const void *a, const void *b)
{
//  return( strcmp((char *)a,(char *)b) );
  return (*(int*)a-*(int*)b);
}
//Ending of sort_function===    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a[number]={0};
  for(int i=0;iLines->Strings[i])!="")
    {
      a[i]=StrToInt(Memo1->Lines->Strings[i]);
    }
  }
  
  //Beging of qsort===
//  int sort_function(const void *a, const void *b);
  qsort(a, number, sizeof(int), sort_function);
  for(int i=0; iLines->Add(IntToStr(a[i]));
  }
  //Ending of qsort===                                      
}
如果輸入三位數字的話,就會不對~到底哪裡錯了??
黑輪 你好: 試試看改成上面這個樣子行不行呢? < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-02 14:13:47 IP:210.243.xxx.xxx 未訂閱
黑輪您好 請注意之前包子大大提供的範例程式碼,就知道問題所在囉 因為您要比較的型態是int,若只取char*的話,超出char範圍的話, 就有可能出現錯誤了,是的,問題在於您的比較函式,引用包子大 的程式碼  
引言: int compare(const void * a, const void * b) { return (*(int*)a - *(int*)b); }
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-02 14:19:28 IP:210.243.xxx.xxx 未訂閱
哇~~這是怎麼回事< > ...總之,就是這樣了< > 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
黑輪
中階會員


發表:135
回覆:188
積分:64
註冊:2004-01-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-02 14:29:52 IP:140.124.xxx.xxx 未訂閱
原來是範圍的問題~感謝大家哦~
系統時間:2024-05-18 15:32:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!