2014-02-18 4 views
0

나는 거의 내 코드로 끝났습니다. 그러나 한 부분이 잘 작동하지 않습니다. 간단히 숫자 만 들어있는 파일 (예 : 판매 된 자동차)에서 읽는 것. 배열을 사용하여 그 수, 최대 수 및 최대 인덱스 수를 합한 값을 얻으려고합니다. 내 질문은 : 어떻게 내 MaxSold 함수에서 두 값을 반환 할 수 있습니까? 그것은 정확하지 않은 색인에 추가 된 최대 값만을 리턴합니다. 결과는 직원 수와 최대 수를 가리켜 야합니다.C++ 배열에서 두 값 반환

#include <iostream> 
#include <fstream> 
/*#include <vector> 
#include <iomanip>*/ 
void Read(int arryList[], int size); 
void Print(int arryList[], int size); 
int total(int arryList[], int size); 
int MaxSold(int arryList[], int size, int& number); 
using namespace std; 
ifstream inFile("C:\\cars.dat"); 
int main() 
{ 
int cars[7]; 
int i; 
Read(cars,7); 
Print(cars,7); 
cout<<"The total of sold cars is: "<<total(cars, 7)<< "\n"; 
cout<<"The Max "<< MaxSold(cars, 7, i); 
} 
    void Read(int arryList[], int size){ 
    for(int i = 0; i < 7; i++) 
{ 
    inFile >> arryList[i]; 

} 
return; 
} 
void Print(int arryList[], int size){ 
for (int i = 0; i < 7; i++){ 

    cout << i + 1 << "-"<< arryList[i] << "\n"; 

} 
return ; 
} 

int total(int arryList[], int size){ 
int sum = 0; 
    for (int i = 0; i < size; i++){ 


sum +=arryList[i]; 

} 
return sum; 
} 
    int MaxSold(int arryList[], int size, int& number){ 
    int Maximum= 0; 
    int relate=0; 
    for(int i=0 ; i<7 ; i++){ 

    if (arryList[i] > Maximum){ 
    Maximum = arryList[i]; 
    relate = i+1; 
    } 
    } 
    return Maximum, relate; 
} 
+0

을 설명하기 : ++ C의 콤마 연산자 다음에,이 평가 어떤 무시'x' 평가'y' 평가하고 어떤 컨텍스트를 사용하여 표현 'X, y' 평가'(X)를, Y '이 나타났다. 예를 들면 :'int x = 3 + f(), 4 * 2;'3 + f()'를 평가합니다 - 그래서'f()'가'std :: cout << "를 포함하면 hi! \ n"; return 42; "hi \ n"출력을 얻지 만, 3 + 42 = 45 값을 버리고 4 * 2를 계산하여 8을 얻습니다.이 값은'x'에 할당 된 값입니다. 'Return Maximum, relate;에 대해서 비슷한 일이 일어나고 있습니다 - 효과적으로'Maximum '은 버리고 무시됩니다. –

답변

1

를 사용하여 다음 std::pair

#include<utility> 
//.. 
std::pair<int,int> MaxSold(int arryList[], int size, int& number) 
{ 
    //... 
    return std::make_pair(Maximum, relate); 
} 

,

std::pair<int,int> p = MaxSold(cars, 7, i) ; 

std::cout<< p.first ; //maximum 
std::cout<< p.second ; //relate 
1

당신은 함수에서 하나 개 이상의 값을 반환 할 수 없습니다 이 지금까지 내 코드입니다. 물론이 값은 여러 값의 컨테이너가 될 수 있습니다. 사용자 정의 유형이 될 수 있지만 가장 간단한 방법은 std::pair<int,int>을 반환하는 것입니다.

std::pair<int, int> MaxSold(int arryList[], int size, int& number) 
{ 
    // ... 
    return std::make_pair(Maximum, relate); 
}