2015-02-06 3 views
0

나는 C++로지도를 배우기 시작했고, 나는 그것을 이해하려고 노력하고있다. 나는 그랬지만, 나는이 운동을하고 그것을 어떻게 관리해야할지 몰랐다.C++ maps exercise

입력 : n - 직원 수. n 행의 에는 직원 이름, 성 및 급여가 입력됩니다.

출력 : 개의 출력 라인에 이름, 성 및 높은 급여 종업원 급여의 최저 및 이름, 성 및 급여의 종업원 급여.

그건 그렇고 숙제가 아닙니다. 나는 혼자서 프로그래밍을 배우려는 학생이다.

지도가 분명히 중요하며이 질문이 도움이 될만한지도가 많이있을 수 있습니다.

이제 월급이 & 성 사이의 관계를 만드는 방법을 모르겠다. 그게 내가 뭘했는지는 틀린데, 어떻게하면지도에 값을 입력하고 필요한 출력을 출력하기 위해 키와 매핑 된 값 사이의 관계를 만들 수 있습니까 ?? :

int n; 

cin>>n; 

    long double sales[n],salary[n]; 
    string name[n],surname[n]; 
    map<long int,string,string>m(n); 
    long int s; 
    for(int i=0;i<n;i++) 
{ cin>>name[i]>>surname[i]>>sales[i]; 
    s=200+0.06*sales[i]; 
    m.push_back(s); 
} 

도와주세요.

+0

문제 문은지도를 사용할 필요가 없습니다. 특히 그 중 하나를 해결하는 데 도움이됩니다. 또한 - 이미 알고 있을지 모르겠지만, 코드는 말도 안되며 원격에서도 유효하지 않습니다. –

+0

그래, 내 코드는 헛소리지만, 나는 노력했다. 연습을하기 위해지도를 사용하여이 운동을 풀고 싶었습니다. 지도가 아니라면 무엇을 제안하나요?지도로 어떻게 해결되는지 알려주세요. – gm98

답변

0

당신은 아주 잘 시작하지만, 몇 가지 중요한 사항이 있습니다 : 키와 값 :

1)지도 두 가지 유형이다가. 당신은 '가치'에 한 값보다 더 필요한 경우, 이유를 집계하지 : 당신이 키의 값을 삽입 할 경우

struct Employee { string name; string surname; long double sale; }; 
std::map<long int, Employee> m; 

2), operator[]를 사용

Employee e; cin >> e.name >> e.surname >> e.sale; 
... calculate s... 
m[s] = e; 

3)를 판매, 급여, 이름 및 성을 배열로 정의 할 필요도없고 올바른 것도 아닙니다. declaration의 인덱스는 일정해야합니다. 그렇지 않으면 VLA입니다 (C99 표준에는 있지만 C++에는 없으며 gcc 확장자로 사용할 수있는 것이 가장 좋습니다). 어쨌든, 당신은 모든 데이터를지도에 보관해야하므로 변수를 임시 저장소로 사용하기 만하면됩니다.

4) 기본적으로 값은 점점 더 정렬됩니다. 따라서 최저 및 최고는 단순히지도의 첫 번째 요소와 마지막 요소입니다.

관련 문제