#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