創建動態數組


#include <iostream>
using namespace std;

//獲取一片內存中的值【當作二維數組執行】
int GetValue(int * arr, int nSize, int nRow, int nColumn)
{
if (nRow >= nSize || nColumn >= nSize)
{
return 0;
}
return *(arr + nRow*nSize + nColumn);
}


//設置內存中的值【當作二維數組執行】
void SetValue(int *arr, int nSize, int nRow, int nColumn, int value)
{
if (nRow >= nSize || nColumn >= nSize)
{
return;
}
*(arr + nRow*nSize + nColumn) = value;
}


//生成動態楊輝三角
void DTYH(int nLevel)
{
int *arr=new int[(nLevel)*(nLevel)];
memset(arr, 0, sizeof(int) * nLevel * nLevel);
for (int i = 0; i < nLevel; i++)
{
SetValue(arr, nLevel, i, 0, 1);
SetValue(arr, nLevel, i, i, 1);
}
for (int i = 2; i < nLevel; i++)
{
for (int j = 1; j < i; j++)
{
SetValue(arr, nLevel, i, j, GetValue(arr, nLevel, i - 1, j - 1) + GetValue(arr, nLevel, i - 1, j));
}
}
for (int i = 0; i < nLevel; i++)
{
if (i % 2)
{
cout << "    ";
}
for (int j = 0; j < (nLevel - i) / 2; j++)
{
if (nLevel % 2 & j == 0 & i % 2)
{
continue;
}
else
{
cout << "        ";
}
}
for (int j = 0; j <= i; j++)
{
printf("%-8d", GetValue(arr, nLevel,i,j));
}
cout << endl;
}
delete[]arr;
}


int main()
{
int a;
while (scanf_s("%d", &a),a)
{
DTYH(a);
}
    return 0;
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



如何動態創建數組 創建動態數組 創建動態數組 怎樣創建動態擴容數組? 動態數組的創建 如何動態創建數組 vector動態創建數組 動態創建數組 怎樣動態創建CString數組? 動態創建數組
 
粤ICP备14056181号  © 2014-2021 ITdaan.com