2011-09-07 2 views
4

한다고 가정 우리는 세 가지 배열 a, bc : 원함가되도록,하나 개의 배열이 개 다른 배열에 따라 정렬

int a[1000] = {3,1,5,4}; 
int b[1000] = {7,9,11,3}; 
char c[1000] = {'A','B','C','D'}; 

배열 a 다음 정렬을 :

a == {1,3,4,5} 

수를인가 정렬 된 배열에서 정렬 된 요소의 배치를 반영하도록 다른 두 배열의 요소가 색인에 의해 다시 배열되도록 정렬하려면? 이 예에서이 결과는

b == {9,7,3,11} 
c == {'B','A','D','C'} 

이되어야합니다. 어떻게해야합니까?

+0

왜 요소를 4 개만 사용하면'x [1000]'입니까? –

+0

char '['] = { 'A', 'B', 'C', 'D'}'('char' 변수가 아닌 한) char ' – carlpett

+0

오 예, 고마워요 – zeulb

답변

3

클래스 ABC을 만들면 3 개의 입력란을 포함하게됩니다 : int a, int b, char c.
이 클래스에 대해 operator<을 구현하고 appro37ri905 크기의 ABC[]을 만들고 ABC[i] = ABC(a[i],b[i],c[i])이되도록 채 웁니다.

operator<을 구현하므로 a 만 비교하고 ABC 배열에 정렬을 사용하십시오.

정렬을 완료 한 후에는 원하는 순서로 모든 요소를 ​​갖게되고 ABC 배열을 반복하고 다른 배열을 채 웁니다.

편집 :

단순화 [하드 코딩] 코드 샘플 :

#include <iostream> 
#include <algorithm> 
using namespace std; 

class ABC { 
public: 
    int a,b; 
    char c; 
    bool operator<(const ABC& other) const { 
    return a < other.a; 
    } 
}; 
int main() { 
    int a[4] = {3,1,5,4}; 
    int b[4] = {7,9,11,3}; 
    char c[4] = {'A','B','C','D'}; 
    ABC abc[4]; 
    for (int i = 0; i< 4; i++) { 
    abc[i].a = a[i]; 
    abc[i].b = b[i]; 
    abc[i].c = c[i]; 
    } 
    sort(abc,abc+4); 
    for (int i = 0; i < 4; i++) { 
    a[i] = abc[i].a; 
    b[i] = abc[i].b; 
    c[i] = abc[i].c; 
    } 
    cout << "a= [" << a[0] << ", " << a[1] << ", " << a[2] << ", " << a[3] << "]" << endl; 
    cout << "b= [" << b[0] << ", " << b[1] << ", " << b[2] << ", " << b[3] << "]" << endl; 
    cout << "c= [" << c[0] << ", " << c[1] << ", " << c[2] << ", " << c[3] << "]" << endl; 
    return 0; 
} 

는 codepad에 나를 위해 좋은 작동합니다 : 당신이 필요 http://codepad.org/eCyNkyqR

+0

네,이게 좋은 선택 인 것 같아요 ... – c0da

+0

저에게 코드 예제를 보여 주시겠습니까? 왜냐하면 새 것이므로 실제로 이해하지 못합니다. – zeulb

+0

@zeulb : 코드 샘플을 추가했습니다. – amit

0

정확히 아니지만, 당신은 할 수 std :: map 및 std :: sort를 사용하여 유사한 결과 달성 :

std::map<int, std::pair<int, char> > someArray; 
관련 문제