// Array initialization triangle, up, down, left and right
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <time.h>
int FunctionCreatPPointer(int **pP, int iSIZE_I, int iSIZE_J);
int FunctionInitPPointer(int **pP, int iSIZE_I, int iSIZE_J);
void FunctionViewPPointer(int **pP, int iSIZE_I, int iSIZE_J);
int FunctionTriangleLEFT_PPointer(int **pP, int iSIZE_I, int iSIZE_J);
int FunctionTriangleRIGHT_PPointer(int **pP, int iSIZE_I, int iSIZE_J);
int FunctionTriangleTOP_PPointer(int **pP, int iSIZE_I, int iSIZE_J);
int FunctionTriangleBOTTOM_PPointer(int **pP, int iSIZE_I, int iSIZE_J);
int _tmain(int argc, _TCHAR* argv[])
{
const int iSIZE = 11;
int **pArrMatrix = new int*[iSIZE];
FunctionCreatPPointer(pArrMatrix, iSIZE, iSIZE);
FunctionInitPPointer(pArrMatrix, iSIZE, iSIZE);
FunctionViewPPointer(pArrMatrix, iSIZE, iSIZE);
FunctionTriangleBOTTOM_PPointer(pArrMatrix, iSIZE, iSIZE);
FunctionViewPPointer(pArrMatrix, iSIZE, iSIZE);
for(int i = 0; i < iSIZE; ++i)
{
delete [] pArrMatrix[i];
}
delete [] pArrMatrix;
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*Function of memory allocation matrix
*/
//////////////////////////////////////////////////////////////////////////////////
int FunctionCreatPPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
for(int i = 0; i < iSIZE_I; ++i)
{
pP[i] = new int[iSIZE_J];
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*The initialization function matrix
*/
//////////////////////////////////////////////////////////////////////////////////
int FunctionInitPPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
for(int i = 0; i < iSIZE_I; ++i)
{
for(int j = 0; j < iSIZE_J; ++j)
{
pP[i][j] = 1;
}
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*Output function matrix
*/
//////////////////////////////////////////////////////////////////////////////////
void FunctionViewPPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
for(int i = 0; i < iSIZE_I; ++i)
{
for(int j = 0; j < iSIZE_J; ++j)
{
std::cout<<pP[i][j];
}
std::cout<<std::endl;
}
std::cout<<std::endl;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*The initialization function of the triangle to the left
*/
//////////////////////////////////////////////////////////////////////////////////
int FunctionTriangleLEFT_PPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
bool bFlags = true;
int iTriangle = 1;
for(int i = 0; i < iSIZE_I; ++i)
{
if(iTriangle == iSIZE_I/2+1)
{
bFlags = false;
}
if(iTriangle < 0)
{
return 1;
}
for(int j = 0; j < iTriangle; ++j)
{
pP[i][j] = 0;
}
if(bFlags)
{
++iTriangle;
}
else
{
--iTriangle;
}
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*The initialization function of the triangle to the right
*/
//////////////////////////////////////////////////////////////////////////////////
int FunctionTriangleRIGHT_PPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
bool bFlags = true;
int iTriangle = iSIZE_J;
for(int i = 0; i < iSIZE_I; ++i)
{
if(iTriangle == iSIZE_I/2+1)
{
bFlags = false;
}
for(int j = iSIZE_J-1; j >= iTriangle-1; --j)
{
pP[i][j] = 0;
}
if(bFlags)
{
--iTriangle;
}
else
{
++iTriangle;
}
if(iTriangle < 0 || iTriangle > iSIZE_J)
{
return 1;
}
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*The initialization function of the triangle at the top
*/
//////////////////////////////////////////////////////////////////////////////////
int FunctionTriangleTOP_PPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
bool bFlags = true;
int iTriangleLEFT = 0, iTriangleRIGHT = iSIZE_J;
for(int i = 0; i < iSIZE_I; ++i)
{
if(iTriangleLEFT == iSIZE_J || iTriangleRIGHT == 0)
{
break;
}
for(int j = 0; j < iTriangleRIGHT; ++j)
{
if(j >= iTriangleLEFT)
pP[i][j] = 0;
}
++iTriangleLEFT;
--iTriangleRIGHT;
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////
/*
*The initialization function of the triangle at the bottom
*/
//////////////////////////////////////////////////////////////////////////////////
int FunctionTriangleBOTTOM_PPointer(int **pP, int iSIZE_I, int iSIZE_J)
{
bool bFlags = true;
int iTriangleLEFT = 0, iTriangleRIGHT = iSIZE_J;
for(int i = iSIZE_I-1; i > 0; --i)
{
if(iTriangleLEFT == iSIZE_J || iTriangleRIGHT == 0)
{
break;
}
for(int j = 0; j < iTriangleRIGHT; ++j)
{
if(j >= iTriangleLEFT)
pP[i][j] = 0;
}
++iTriangleLEFT;
--iTriangleRIGHT;
}
return 0;
}