2014-02-08 84 views
0

我正嘗試使用動態分配的數組而不是向量來創建迷你函數,因爲我試圖弄清楚它們是如何工作的。每行添加整數並將其存儲在數組中

因此,基本上,用戶輸入他們想要的行數,然後,他們進入一組整數/雙打分隔的空間。然後,我想要函數計算每行中整數的總和,並將其分配到數組中。

例如:

3 
1 2 3 4 
3 2 2 1 //assume each line has the same # of integers (4) 
1 4 4 1 

然後,如果我實現我的功能總和會再爲10,8,10

到目前爲止,我有這樣的:

int* total //is there a difference if I do int *total ?? 
int lines; 
std::cout << "How many lines?; 
std::cin >> lines; 
total = new int[lines]; 

for (int i=0;i<lines;i++) 
{ 
    for (int j=0;j<4;j++) 
    { 
     total[i] = ? //i'm confused how you add up each line and then put it in the array, then go onto the next array.. 
    } 
} 

如果沒有任何意義,請隨時提問!謝謝!

+0

'int * total'和'int * total'是相同的。 – xis

回答

2

,你可能會想在內環前右設置total[i]0,然後只需使用operator+=添加任何你從std::cin流得到。

// ... 
total[i]=0; 
for (int j=0;j<4;j++) 
{ 
    int temp; 
    cin >> temp; 
    total[i] += temp; 
} 
// ... 

這可能是一個有點容易理解,如果你第一次分配的數組來存儲值,然後加在一起。

-2

IMHO可以使用2維陣列做到這一點:

所有的
int** total; 

// ... 

total = new int*[lines]; 

for(int i = 0; i < lines; ++i) 
{ 
    total[i] = new int[4]; // using magic number is not good, but who cares? 

    for(int j = 0; j < 4; ++j) 
    { 
     int tmp; 
     std::cin>>tmp; 
     total[i][j] = tmp; 
    } 
} 

// do sth on total 

for(int i = 0; i < lines; ++i) 
    delete[] total[i]; 

delete[] total; 
+0

這沒有任何「添加」組件。 –

+0

@BenVoigt它應該在'//做某件我忽略的部分。 – xis

0

首先,需要分配一個數組的數組來存儲每行的號碼。例如

const size_t COLS = 4; 
size_t rows; 
std::cout << "How many lines? "; 
std::cin >> rows; 

int **number = new int *[rows]; 

for (size_t i = 0; i < rows; i++) 
{ 
    number[i] = new int[COLS]; 
} 

int *total = new int[rows]; 
// or int *total = new int[rows] {}; that do not use algorithm std::fill 

std::fill(total, total + rows, 0); 

之後,您應該輸入數字並填寫數字的每一行。

0

int* totalint *total(無論如何在你的例子)真的沒有任何區別。就個人而言,我更喜歡第二個。

至於你的問題,你需要將你的總數設置爲初始值(在這種情況下,你將它設置爲零),然後從那裏只需從cin獲得值後添加到它。

With cin,既然你有空格,它會得到每個單獨的數字(你知道,我假設),但是你可能應該(我會)將該數字存儲到另一個變量,然後將該變量添加到該行的總數。

我認爲這一切都有道理。希望能幫助到你。

相關問題