2016-02-21 74 views
3

我必須將變量存儲在1d數組中,並使用for循環將它們放入2d數組中。然後我需要初始化2d數組的第0 - 9行到第1個數組的元素,所有這些都將在函數中完成。我的問題如下。操作2d數組的問題

  1. 我能否更有效地將數組gamma中的變量存儲到數組inStock中?

  2. 如何初始化所有行看起來像這樣,如果它甚至是可能的。

一旦行0 - 9已初始化我需要然後再在陣列中的其餘元素並將它們初始化到前元件

的第三功率

例如:

11^3 = 1331,1331^3 = 2357947691等等。

#include <iostream> 
#include <cmath> 
#include <iomanip> 
using namespace std; 

const int COLUMNS = 4; 
const int ROWS = 10; 

void copyGama(int tempGamma[], int gamma_size, int tempArray2[][COLUMNS]); 

int main() 
{ 
    int gamma[4] = { 11, 13, 15, 17 }, 
     inStock[ROWS][COLUMNS], 
     Gamma_Size = 4; 

     void copyGama(gamma, Gamma_Size, inStock); 

    for (int i = 0; i < ROWS; i++) 
    { 
     for (int j = 0; j < COLUMNS; j++) 
     { 
     cout << setw(15) << inStock[i][j]; 
     } 
    cout << "\n"; 
    } 





return 0; 
} 


void copyGama(int tempGamma[], int gamma_size, int tempArray2[][COLUMNS]) 
{ 
    int copyArray[4]; 

    for (int i = 0; i < gamma_size; i++) 
    { 
     copyArray[i] = tempGamma[i]; 
     /* This loops coppies all elements in tempGamma[] and puts them 
      in copyArray[] 
     */ 
    } 


     for (int i = 0; i < ROWS - 5 ; i++) 
     {  
      for (int j = 0; j < COLUMNS - 3; j++) 
      { 
       tempArray2[i][j] = copyArray[i]; 

       /* This loop is where inStock[][] is initialized 
       */ 

      } 
     } 



      for (int i = 4; i < ROWS; i++) 
      { 
       for (int j = 0; j < COLUMNS; j++) 
       { 
        tempArray2[i][j] = static_cast<double>(pow(tempArray2[i][j], 3)); 
        /* 
        This is where I attempt to initialize the remaining 
        elements to the third power of the previous element 
        */ 
       } 
      } 



} 

當上面的代碼,如果運行輸出看起來像這樣

  11  -858993460  -858993460  -858993460 
     13  -858993460  -858993460  -858993460 
     15  -858993460  -858993460  -858993460 
     17  -858993460  -858993460  -858993460 
-2147483648 -2147483648 -2147483648 -2147483648 
-2147483648 -2147483648 -2147483648 -2147483648 
-2147483648 -2147483648 -2147483648 -2147483648 
-2147483648 -2147483648 -2147483648 -2147483648 
-2147483648 -2147483648 -2147483648 -2147483648 
-2147483648 -2147483648 -2147483648 -2147483648 

我明白爲什麼對面的前四個行權的列的樣子做,一個是因爲他們被跳過每個循環,我也需要修復。

我真的不明白的是我怎麼能初始化行0 - 9,因爲即使我刪除 - 5或-3分別它仍然無法正常工作

編輯:整理了一些從複製錯誤粘貼

編輯:在循環中添加了註釋要清楚他們的

+0

你應該通過你們的節目逐行使用調試器來縮小錯誤的來源步驟。 –

+0

我編譯時沒有錯誤,如果你的意思是邏輯錯誤,我已經知道它在哪裏,我只是不確定如何解決它。 – Afflicted

+0

這不會編譯:'int(main)',它應該是'int main(){...}' –

回答

0

源有4個元素是什麼,而目標已經超過4個元素。您可以使用%國防部運營商源的元素之間旋轉:

//Pseudo code: 
dst[0]=src[0]; 
dst[1]=src[1]; 
dst[2]=src[2]; 
dst[3]=src[3]; 
dst[4]=src[0]; 
dst[5]=src[1]; 
... 

例如

void copyGama(int tempGamma[], int gamma_size, int tempArray2[][COLUMNS]) 
{ 
    for (int i = 0; i < ROWS; i++) 
    { 
     for (int j = 0; j < COLUMNS; j++) 
     { 
      int c = i % gamma_size; 
      tempArray2[i][j] = tempGamma[c]; 
     } 
    } 

    /* un-comment this section later 
    for (int i = 4; i < ROWS; i++) 
    { 
     for (int j = 0; j < COLUMNS; j++) 
     { 
      tempArray2[i][j] = static_cast<double>(pow(tempArray2[i][j], 3)); 
     } 
    } 
    */ 
} 
+0

哦,哇,削減了大量的浪費,我甚至不認爲在這種情況下使用國防部,但它是完全意義非常感謝你! – Afflicted