2017-02-04 17 views
1

私はn個の文字列を入力し、並べ替えが長さとascii値によって行われる昇順でソートする必要があります。弦5 オマール リンゴ バナナ アリの 何 猫文字列のアスキーと長さの並べ替え

出力がなければなりません: アリ猫オマールリンゴバナナ

enter code here: 
#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    int n,i,l,m,j; 
    char str[20][20],temp[20],temp2[20][20]; 
    printf("enter no of strings\n"); 
    scanf("%d",&n); 
// string is given as input 
    for(i=0; i<n; i++) 
    { 
     fflush(stdin); 
     scanf("%s",str[i]); 
     l=strlen(str[i]); 
     printf("len is %d\n",l); 
    } 
//sorting on the basis of length 
    for(i=0; i<=n; i++) 
     for(j=i+1; j<=n; j++) 
     { 
      if(strlen(str[i])>strlen(str[j])) 
      { 
       strcpy(temp,str[i]); 
       strcpy(str[i],str[j]); 
       strcpy(str[j],temp); 
      } 
     } 
//sorting on the basis of ascii values 
    for(i=0; i<n; i++) 
    { 
     if(l==m)// spcl condition 
     { 
      printf("\ncheck",l,m); 
      for(j=0; j<strlen(str[i]); j++) 
      { 
       if(strcmp(str[j][i],str[j][++i])>0) 
       { 
        strcpy(temp2[20],str[i]); 
        strcpy(str[i],str[++i]); 
        strcpy(str[++i],temp2[20]); 
       } 
      } 
     } 
     else// default condition 
     { 
      strcpy(temp2[20],str[i]); 
      strcpy(str[i],str[++i]); 
      strcpy(str[++i],temp2[20]); 
     } 
    } 
//display each string 
    printf("the strings are\n"); 
    for(i=0; i<n; i++) 
    { 
     printf("%s",str[i]); 
     printf("\n"); 
    } 

    return 0; 
} 
サンプルテストケースがない ....助けてください

答えて

0

十分に簡単です。

qsortは、ユーザー定義の比較機能を使用します。最初に長さを比較してください。等しい場合は、strcmpを呼び出してアルファベット順に比較してください。

qsortを実装する必要がある場合は、最初に同じインタフェースを持つbubblesortを作成して、動作させ、より高速なアルゴリズムに置き換えてください。

関連する問題