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

如何做排序,並剔除重覆出現的數字。

答題得分者是:nlj859
macoy000
一般會員


發表:2
回覆:2
積分:0
註冊:2003-09-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-15 16:52:58 IP:163.13.xxx.xxx 未訂閱
請問各位: 我有一陣列a[10] = {20, 0, 9, 5, 4, 9, 13, 9, 2, 2} 該如何將他做排序,並剔除重覆出現的數字。 我想要的結果{0, 2, 4, 5, 9, 13, 20} 以及知道經整理後留下的數字,為七個。 謝謝各位
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-15 17:28:09 IP:163.28.xxx.xxx 未訂閱
先做剔除重覆的字或是先排序都可以. 排序可使用BubbleSort,範例碼如下:
#include
#define n 20    void swap(int *a, int *b)
{
 int temp;
 temp=*a;
 *a=*b;
 *b=temp;
 }    int re(int k)
{ if (k==1) return 0;else
  if (k==2) return 1;else
  return (k-1 re(k-1)); };    void main ()
{int i,j,c2=0,exit_flag=0;    int a[n]={1,21,0,47,60,15,84,65,77,88,100,93,8,17,36,5,24,63,72,20};
int s[n];    // start of bubble sort
for(i=0;ia[j 1-1])
     {swap(&a[j-1],&a[j 1-1]);
      c2  ;
      exit_flag=0; }
     }
}    printf("after  sorted : ");
for (i=0;i
======================================================
要剔除相同的數字的話,就一個一個去比對:(假設10個數)
for (int i=0;i<10;i  )
    {   
     for (j=i 1;j<10;j  )
        {
         //比對,如果重覆就把array[i]值設為"x"
        } 
    }
再
int a=0;
for (int n=0;n<10;n  )
      {
       if (Array[n]!='n')
          {
            //存到新的newArray[a];
            a  ;
          }
      }
發表人 - nlj859 於 2004/07/15 17:31:03
stanley
一般會員


發表:9
回覆:36
積分:14
註冊:2003-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-15 17:28:57 IP:61.219.xxx.xxx 未訂閱
macoy000你好: 請參考下列程式
 
    int temp,num = 10;
    int a[] = {20, 0, 9, 5, 4, 9, 13, 9, 2, 2};
    int b[10];
    for(int i=0;i<10;i  ) {
        for(int j=i 1;j<10;j  ) {
            if(i!=0 & a[i-1] == a[j]) {
                a[j] = 1000;
                num--;
            }
            if(a[i]>a[j]){
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
最後a[num]應該就是你要的答案
stanley
一般會員


發表:9
回覆:36
積分:14
註冊:2003-11-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-15 18:07:16 IP:61.219.xxx.xxx 未訂閱
不是在撈分數, 是筆誤
 
    int temp,num = 10;
    int a[] = {20, 0, 9, 5, 4, 9, 13, 9, 2, 2};
    int b[10];
    for(int i=0;i<10;i  ) {
        for(int j=i 1;j<10;j  ) {
//            if(i!=0 & a[i-1] == a[j]) {   筆誤
            if((i!=0) && (a[i-1] == a[j])) {
                a[j] = 1000;
                num--;
            }
            if(a[i]>a[j]){
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }    
macoy000
一般會員


發表:2
回覆:2
積分:0
註冊:2003-09-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-15 19:11:17 IP:163.13.xxx.xxx 未訂閱
謝謝nlj859以及stanley兩位大大的幫忙,我來研究看看。感謝!
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-15 20:59:37 IP:61.30.xxx.xxx 未訂閱
剔除同樣的數:
#include 
#include 
int main(int argc, char* argv[])
{
  char Array[]= {20, 0, 9, 5, 4, 9, 13, 9, 2, 2};
  char newArray[10];
  int a=0,n,i,j;
//找出一樣的,把它mark起來
  for (i=0;i<10;i  )
      {
       for (j=i 1;j<10;j  )
           {
            if (Array[i]==Array[j])
               Array[i]='x';
           }
      }
//將篩選過的放到一個新的array中
  for (n=0;n<10;n  )
      {
       if (Array[n]!='x')
          {
            newArray[a]=Array[n];
            a  ;
          }
       }
//印出新的array
for (n=0;n     
        
系統時間:2024-06-17 11:52:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!