#99 Article 1032 Posted at 1995/12/15 03:40:35 by MSP-Iris (MAP4370) [SAHOU.3]

Subject: Re: プログラミング作法・お題3 /1029

C版です。DOSのコマンドラインは128桁しか入らないから、ソート数
は63個までね。
 strcmp でバブルソートするだけ。こんなんなら qsort の方がいいですね。
 なんかうまい方法ないかな。でも、同着(2着タイ、とか)に対応。
----------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void errend (s) char *s; {
        printf("%s\n",s);
        abort();
        }

main (int argc,char *argv[]) {
        int rank[64]; int i,j;int stsort,edsort;

        if(argc<2|argc>64)
                errend("ソート対象は1~63個です");
        stsort=1; edsort=argc-1;

        rank[stsort]=1;                         /* sort routine      */
        for(i=stsort+1;i<=edsort;i++)           /* from here         */
                {
                rank[i]=i-stsort+1;
                for(j=i-1;j>=stsort;j--)
                        {
                        if(strcmp(argv[i],argv[j])<0)
                                {
                                rank[i]--;
                                rank[j]++;
                                }
                        else if(strcmp(argv[i],argv[j])==0)
                                rank[i]--;
                        }
                }                               /* ends here         */
        printf("順位 文字列\n");
        for(i=1;i<=edsort-stsort+1;i++)         /* sorted data print */
                {                               /* from here         */
                for(j=stsort;j<=edsort;j++)
                        {
                        if(rank[j]==i)
                                printf("%2i   %s\n",i,argv[j]);
                        }
                }                               /* ends here         */
        }
----------------------------
                                  MAP4370    MSP-Iris