2013-03-05 103 views
0

我有這樣的代碼在那裏讀取用戶代碼,並將其存儲在陣列中,後來發現每個陣列上的元素的總和,並比較兩者的用戶輸入,該代碼如下:C++讀取比較陣列

#include <iostream> 
#include <vector> 
#include <numeric> 

typedef std::vector<int> int_vec_t; 

//Call by reference to set variables in function 
void readData(int_vec_t& v1, int_vec_t& v2) 
{ 
    v1 = int_vec_t{1,1,8}; //This only works for C++11 
    v2 = int_vec_t{2,2,2}; 
} 

void readUserData(int_vec_t& v) 
{ 
    for(;;) 
    { 
    int val; 
    std::cin>>val; 
    if(val == 0) break; 
    v.push_back(val); 
    } 
} 

int main() 
{ 
    using namespace std; 

    int_vec_t A; 
    int_vec_t B; 

    readData(A,B); 
    //Or 
    readUserData(A); 
    readUserData(B); 

    int sumA = accumulate(A.begin(), A.end(), 0); //Then use iterators 
    int sumB = accumulate(B.begin(), B.end(), 0); 

    cout << ((sumA > sumB) ? "Array A Greater Than Array B\n" : "Array B Greater Than Array A\n"); 

    return 0; 
} 

但上面的代碼生成以下錯誤:

test.cpp: In function ‘void readData(int_vec_t&, int_vec_t&)’: 

我使用g++ test.cpp -o test編譯代碼。我在這裏錯過了什麼?

+5

這不是錯誤。這是說錯誤在這個函數中。順便說一下,你應該只能說'v1 = {1,1,8};'。 – chris 2013-03-05 15:19:55

+0

@chris那麼我該如何修改readData(int_vec_t&v1,int_vec_t&v2)和readUserData(int_vec_t&v)函數? – 2013-03-05 15:22:01

+1

你的代碼編譯罰款[這裏](http://liveworkspace.org/code/SWmBI$1) – 2013-03-05 15:22:13

回答

3

你不覺得編譯應該是這樣的:

$ g++ -std=c++11 test.cpp -o test

it keep taking inputs, how can i limit it to take only 5 elements per array

void readUserData(int_vec_t& v) 
{ 
    for(int i = 0; i < 5; i++) 
    { 
    int val; 
    std::cin>>val; 
    // if(val == 0) return; 
    v.push_back(val); 
    } 
} 

Great thanks, in between the loop how can out put statement so that user knows he is entering array for array 1 and after that array 2?

void readUserData(int_vec_t& v, std::string default = "") 
{ 
    for(int i = 0; i < 5; i++) 
    { 
    int val; 
    std::cout << "Enter for "<< default << "[" << i << "]: "; 
    std::cin>>val; 
    // if(val == 0) return; 
    v.push_back(val); 
    } 
} 

從你main(),你可以在不同的字符串發送。

例如像這樣:

readUserData(A, "A"); 
readUserData(B, "B"); 
+0

確定工作正常,但它仍然需要用戶輸入,但不打印任何東西 – 2013-03-05 15:24:44

+0

@SaraswathiApavoo你是什麼意思,它不打印任何東西?它必須要麼打印這兩個字符串 – 2013-03-05 15:26:51

+0

它繼續採取輸入之一,我怎麼能限制它只需要每個陣列5個元素 – 2013-03-05 15:30:07