程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C++實現 一維數組轉換為二維數組和三維數組

C++實現 一維數組轉換為二維數組和三維數組

編輯:關於C語言
 

一維數組轉換為二維數組、三維數組以及多維數組,都不是什麼復雜的事情。只要一維數組中有一個元素,那麼它就可以轉換為二維數組;同樣的他也可以轉換為三維數組。但是這樣做,在一般情況下完全沒有實際意義。

我以a[24]的數組為例,如果你想將它轉換為b[4][6],則你需要將a[24]分為4段,每段的長度為6。所以第N段的起始位置就是0+n×6。如果這個數組轉換為三維數組(以 b[2][3][4]為例)則需要分為2段,每段再分3小段。代碼如下:

 

#include<iostream>

#include <cstdlib>

using namespace std;

void ot2(int *p){

for(int i=0;i<4;i++)

for(int j=0;j<6;j++)

*(p+i*6+j)=rand()%100;

for(int i=0;i<4;i++){

for(int j=0;j<6;j++){

cout<<'['<<i<<"]["<<j<<"]:"<<*(p+i*6+j)<<' ';

}

cout<<endl;

}

}

void ot3(int *p){

int a[2][3][4];

for(int i=0;i<2;i++)

for(int j=0;j<3;j++)

for(int k=0;k<4;k++)

a[i][j][k]=*(p+12*i+4*j+k);

for(int i=0;i<2;i++)

for(int j=0;j<3;j++){

for(int k=0;k<4;k++)

cout<<"a["<<i<<"]["<<j<<"]["<<k<<']'<<a[i][j][k]<<' ';

cout<<endl;

}

}

 

int main(){

int *p=new int[24];

cout<<"將一維數組轉換為二維數組結果如下:"<<endl;

ot2(p);

cout<<"將一維數組轉換為三維數組結果如下:"<<endl;

ot3(p);

cout<<"原始的一維數據如下:"<<endl;

for(int i=0;i<24;i++)

cout<<*(p+i)<<' ';

 

return 0;

}


結果如下:


將一維數組轉換為二維數組結果如下:

[0][0]:83 [0][1]:86 [0][2]:77 [0][3]:15 [0][4]:93 [0][5]:35

[1][0]:86 [1][1]:92 [1][2]:49 [1][3]:21 [1][4]:62 [1][5]:27

[2][0]:90 [2][1]:59 [2][2]:63 [2][3]:26 [2][4]:40 [2][5]:26

[3][0]:72 [3][1]:36 [3][2]:11 [3][3]:68 [3][4]:67 [3][5]:29

將一維數組轉換為三維數組結果如下:

a[0][0][0]83 a[0][0][1]86 a[0][0][2]77 a[0][0][3]15

a[0][1][0]93 a[0][1][1]35 a[0][1][2]86 a[0][1][3]92

a[0][2][0]49 a[0][2][1]21 a[0][2][2]62 a[0][2][3]27

a[1][0][0]90 a[1][0][1]59 a[1][0][2]63 a[1][0][3]26

a[1][1][0]40 a[1][1][1]26 a[1][1][2]72 a[1][1][3]36

a[1][2][0]11 a[1][2][1]68 a[1][2][2]67 a[1][2][3]29

原始的一維數據如下:

83 86 77 15 93 35 86 92 49 21 62 27 90 59 63 26 40 26 72 36 11 68 67 29

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved