#99 Article 1060 Posted at 1995/12/21 02:42:29 by MSP-Iris (MAP4370) [SAHOU.4]

Subject: Re: プログラミング作法・お題4 /1052

先のソートルーチンを利用して...(^^;
 同着判定をして、それを並べて置いてあるので、あとは数えるだけ。

-----------------------------
 Art.1046 の ASM ルーチンをリンクして下さい(_SORTIT)。
-----------------------------
 Art.1049 の ASM ルーチンをリンクして下さい(_SORTIU)。
-----------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern void SORTIT (char *,char *,int,int);
extern void SORTIU (char *,char *,int);

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

main () {
        static char mjstr[64][32]; static unsigned char rank[64],queue[64];
        int i,j; char tmp[32];

        i=1;
        while(i<=63&(fgets(tmp,32,stdin)!=NULL))
                {
                if(tmp[0]=='\n')
                        break;
                strtok(tmp,"\n");
                strncpy(mjstr[i],tmp,31);
                fflush(stdin);
                i++;
                }
        i--;

        if(i<1|i>63)
                errend("対象は1~63個です");
        SORTIT(&mjstr[0][0],&rank[0],i,32);
        SORTIU(&rank[0],&queue[0],i);

        printf("数量 文字列\n");
        j=1;
        for(;i>=1;i--)
                {
                if(i!=1&rank[queue[i]]==rank[queue[i-1]])
                        {
                        j++;
                        continue;
                        }
                printf("%2i   \'%s\'\n",j,mjstr[queue[i]]);
                j=1;
                }
        }
-----------------------------
                                  MAP4370    MSP-Iris