2017-05-11 7 views
-5

配列をアルファベット順にソートしようとしていますが、配列をアルファベット順に並べ替えることはできません。私は並べ替えに関するいくつかの基本を知っていますが、アルファベット順に並べ替える方法はわかりません。配列をアルファベット順に並べ替える(C++)

EDIT:名前、姓、ID、グレードの4つの並列配列で作業しています。私は文字列である姓でソートしようとしています。私はすべての情報を交換する方法を知っているだけで、アルファベット順に比較する方法を知る必要があります。

+1

私は何かしようとしていますが、わかりません。これはプログラミングの質問よりも、徹底的な命令です。 –

答えて

-2

各文字を他の文字と簡単に比較することで、アルファベット順に並べ替えることができます。

コンパイラは、文字を比較しながら文字のASCII値を取ります。

たとえば、文字列配列はです。char ch [6];この配列をソートするために、あなたが行うことができます

さて、上記のコードで

char temp = ch[0]; 

for(i=0;i<6;i++) 
{ 
    for(j=0;j<6;j++) 
    {  
     if(ch[i]<ch[j]) 
     { 
      temp = ch[i]; 
      ch[i]=ch[j]; 
      ch[j]=temp; 
     } 
    } 
} 

を、それは簡単ですので、コンパイラは、ASCII値をとります。

任意のソートアルゴリズムを適用できます。

0

以下にお試しください。 。

#include<bits/stdc++.h> 
using namespace std ; 

struct Student 
{ 
    string firstName; 
    string lastName; 
    float grade ; 
    string id ; 

}; 

bool byLastName(Student b ,Student a) 
{ 
    if(strcmp(a.lastName.c_str() , b.lastName.c_str()) == 1) 
    return true ; 
    return false ; 
} 


int main() 
{ 
    Student them [] = { 
     {"Sudipto" , "Roy" , 3.5 , "A-51"}, 
     {"Potter" , "Zam" , 4.5 , "X-420"}, 
    }; 

    int themCount = sizeof (them)/sizeof (Student) ; 

    sort(them , them + themCount , byLastName); 

    for (auto a : them) 
     cout << a.lastName <<endl ; 


    return 0; 
} 
関連する問題