입력받은 양의 정수의 각 자리 수를 곱한다.
이 때, 0은 곱하지 않는다.
곱한 수가 2자리 이상일 때는 다시 각 자리 수를 곱한다.
곱한 수가 1자리 숫자이면 값을 출력하고 프로그램을 종료한다.
#include <iostream>
using namespace std;
int main() { int n = 15;
int mid = n / 2;
int boundaryX1 = 0; int boundaryX2 = 0; int boundaryY1 = 0; int boundaryY2 = 0;
int** arr = new int* [n];
for (int i = 0; i < n; i++) arr[i] = new int[n];
for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) arr[i][j] = 0;
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << arr[i][j] << " "; } cout << endl; }
for (int i = 1; i <= mid; i += 2) { boundaryX1 = mid - i; boundaryX2 = mid + i; boundaryY1 = mid - i; boundaryY2 = mid + i;
int x = boundaryX1; int y = boundaryX1; int xInc = 0; int yInc = 1;
while (true) { arr[x][y] = 1; x += xInc; y += yInc;
if (y == boundaryY2) { xInc = 1; yInc = 0; } if (x == boundaryX2) { yInc = -1; xInc = 0; } if (y == boundaryY1) { xInc = -1; yInc = 0; }
if (x == boundaryX1 && y == boundaryY1) break; } }
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << arr[i][j] << " "; } cout << endl; } } |