C++大作頁-數組運算.動態多維陣列

來源:互聯網
上載者:User

很久沒有動代碼了,下面是這學期C++的大作業。

老師還是在念課本,然後布置了這個夠2的大作業算最後的考試,唉。

很想花時間再學習一遍C++,比如,再看一遍C++ primier,把後面的題做了,還有Thinking in C++,還有資料結構與演算法 C++描述。

用Code::Blocks寫的。

被一個問題卡住了許久,就是在引用標頭檔的時候用相對路徑的話回提示找不到檔案,最後用絕對路徑就解決了。

項目1:
目的:熟悉c++動態記憶體分配
描述:使用c++程式定義動態數組類,使用new和delete操作符實現動態二維數組和三維數組的定義
//main.cpp
//主程式類
#include <iostream>
#include "/home/empty/c/Array/include/DynamicArray.h"
#include "/home/empty/c/Array/include/DynamicArray3d.h"
using namespace std;

int main()
{
    cout << "Hello world!" << endl;

    DynamicArray a;
    a.printArray();
    DynamicArray3d b;
    b.printArray();
     return 0;
}
//DynamicArray.h
//二維數組標頭檔
#ifndef DYNAMICARRAY_H
#define DYNAMICARRAY_H
#include <iostream>
using namespace std;
class DynamicArray
{
public:
    DynamicArray(int m=5,int n=5);
    ~DynamicArray();
    void printArray();

private:
    int **m_pArray;      //用於儲存內部數組
    int m_iSize;
    int n_iSize;         //用於記錄佔用的記憶體數

};

#endif // DYNAMICARRAY_H

//DynamicArray.cpp
//二位元組源檔案
#include "/home/empty/c/Array/include/DynamicArray.h"

DynamicArray::DynamicArray(int m,int n)
{
     int i,j;
     m_iSize=m;
     n_iSize=n;
     m_pArray = new int* [m_iSize];
     for (i = 0; i < m_iSize; i++)
          m_pArray [i] = new int[n_iSize];
     for (i = 0; i < m_iSize; i++)
         for (j = 0; j < n_iSize; j++)
          {
               m_pArray[i][j]=i+10*j;
          }
}

//解構函式
DynamicArray::~DynamicArray()
{
    for (int i = m_iSize; i > 0;)
          delete[] m_pArray[--i];
     delete[] m_pArray;
}
void DynamicArray::printArray()
{
     int i,j;
     cout << "Print Array:" << endl;
     for (i = 0; i < m_iSize; i++)
     {
          for(j = 0; j < n_iSize; j++)
          cout<<m_pArray [i][j]<<"   ";
          cout<<endl;
     }

}

//DynamicArray3d.h
//三維數組標頭檔
#ifndef DYNAMICARRAY3D_H
#define DYNAMICARRAY3D_H
#include <iostream>
using namespace std;

class DynamicArray3d
{
     public:
          DynamicArray3d(int m=5,int n=5,int o=5);
          ~DynamicArray3d();
          void printArray();
     private:
          int ***m_pArray;      //用於儲存內部數組
          int m_iSize;
          int n_iSize;         //用於記錄佔用的記憶體數
          int o_iSize;
};

#endif // DYNAMICARRAY3D_H
//三維數組源檔案
#include "/home/empty/c/Array/include/DynamicArray3d.h"

DynamicArray3d::DynamicArray3d(int m,int n,int o)
{
     int i,j,k ;
     m_iSize=m;
     n_iSize=n;
     o_iSize=o;
     m_pArray= new int**[m_iSize] ;
     for( i = 0 ; i < m_iSize ; i ++ )
          m_pArray[i] = new int*[n_iSize] ;
     for( i = 0 ; i < m_iSize ; i ++ )
          for( j = 0 ; j < n_iSize ; j ++ )
          m_pArray[i][j] = new int[o_iSize ] ;
    //輸入三維數組值:
   for(i = 0 ; i <m_iSize ; i ++ )
    for(j = 0 ; j < n_iSize ; j ++ )
     for( k = 0 ; k < o_iSize ; k ++)
      m_pArray[i][j][k] = i*100+j*10+k;
}

DynamicArray3d::~DynamicArray3d()
{
     //dtor
}
void DynamicArray3d::printArray()
{
     int i,j,k ;
     for(i = 0 ; i <m_iSize ; i ++ )
     {
          for(j = 0 ; j < n_iSize ; j ++ )
          {
                for( k = 0 ; k < o_iSize ; k ++)
                      cout<<m_pArray[i][j][k]<<"  ";
               cout<<"       ";
          }
     cout<<endl;
     }

}


項目1:
目的:熟悉c++動態記憶體分配
描述:使用c++程式定義動態數組類,使用new和delete操作符實現動態二維數組和三維數組的定義
//main.cpp
//主程式類
#include <iostream>
#include "/home/empty/c/Array/include/DynamicArray.h"
#include "/home/empty/c/Array/include/DynamicArray3d.h"
using namespace std;

int main()
{
    cout << "Hello world!" << endl;

    DynamicArray a;
    a.printArray();
    DynamicArray3d b;
    b.printArray();
     return 0;
}
//DynamicArray.h
//二維數組標頭檔
#ifndef DYNAMICARRAY_H
#define DYNAMICARRAY_H
#include <iostream>
using namespace std;
class DynamicArray
{
public:
    DynamicArray(int m=5,int n=5);
    ~DynamicArray();
    void printArray();

private:
    int **m_pArray;      //用於儲存內部數組
    int m_iSize;
    int n_iSize;         //用於記錄佔用的記憶體數

};

#endif // DYNAMICARRAY_H

//DynamicArray.cpp
//二位元組源檔案
#include "/home/empty/c/Array/include/DynamicArray.h"

DynamicArray::DynamicArray(int m,int n)
{
     int i,j;
     m_iSize=m;
     n_iSize=n;
     m_pArray = new int* [m_iSize];
     for (i = 0; i < m_iSize; i++)
          m_pArray [i] = new int[n_iSize];
     for (i = 0; i < m_iSize; i++)
         for (j = 0; j < n_iSize; j++)
          {
               m_pArray[i][j]=i+10*j;
          }
}

//解構函式
DynamicArray::~DynamicArray()
{
    for (int i = m_iSize; i > 0;)
          delete[] m_pArray[--i];
     delete[] m_pArray;
}
void DynamicArray::printArray()
{
     int i,j;
     cout << "Print Array:" << endl;
     for (i = 0; i < m_iSize; i++)
     {
          for(j = 0; j < n_iSize; j++)
          cout<<m_pArray [i][j]<<"   ";
          cout<<endl;
     }

}

//DynamicArray3d.h
//三維數組標頭檔
#ifndef DYNAMICARRAY3D_H
#define DYNAMICARRAY3D_H
#include <iostream>
using namespace std;

class DynamicArray3d
{
     public:
          DynamicArray3d(int m=5,int n=5,int o=5);
          ~DynamicArray3d();
          void printArray();
     private:
          int ***m_pArray;      //用於儲存內部數組
          int m_iSize;
          int n_iSize;         //用於記錄佔用的記憶體數
          int o_iSize;
};

#endif // DYNAMICARRAY3D_H
//三維數組源檔案
#include "/home/empty/c/Array/include/DynamicArray3d.h"

DynamicArray3d::DynamicArray3d(int m,int n,int o)
{
     int i,j,k ;
     m_iSize=m;
     n_iSize=n;
     o_iSize=o;
     m_pArray= new int**[m_iSize] ;
     for( i = 0 ; i < m_iSize ; i ++ )
          m_pArray[i] = new int*[n_iSize] ;
     for( i = 0 ; i < m_iSize ; i ++ )
          for( j = 0 ; j < n_iSize ; j ++ )
          m_pArray[i][j] = new int[o_iSize ] ;
    //輸入三維數組值:
   for(i = 0 ; i <m_iSize ; i ++ )
    for(j = 0 ; j < n_iSize ; j ++ )
     for( k = 0 ; k < o_iSize ; k ++)
      m_pArray[i][j][k] = i*100+j*10+k;
}

DynamicArray3d::~DynamicArray3d()
{
     //dtor
}
void DynamicArray3d::printArray()
{
     int i,j,k ;
     for(i = 0 ; i <m_iSize ; i ++ )
     {
          for(j = 0 ; j < n_iSize ; j ++ )
          {
                for( k = 0 ; k < o_iSize ; k ++)
                      cout<<m_pArray[i][j][k]<<"  ";
               cout<<"       ";
          }
     cout<<endl;
     }

}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.