很久沒有動代碼了,下面是這學期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;
}
}