문제
파스칼 삼각형이란 아래 <표1> 과 같은
자신의 왼쪽 위의 좌표와 오른쪽 위의 좌표 값을 더해서 값을 계속 갱신시켜 나가는 형태의 삼각형을 말한다.
아래와 같은 파스칼 삼각형의 높이 n과 종류 m을 입력받은 후 다음과 같은 형태의 파스칼 삼각형을 출력하는 프로그램을 작성하시오.

<처리조건>
m에 대한 파스칼 삼각형의 모습은 아래 <표2>의 모습과 같다.

입력형식
삼각형의 높이n(1부터 30사이의 정수)과 종류m(1부터 3사이의 정수)을 입력받는다.
출력형식
위에서 제시한 형태의 파스칼 삼각형을 입력에서 들어온 높이 n과 종류 m에 맞춰서 출력한다. 숫자는 한칸의 공백으로 구분하여 출력한다.

<코드>
#include <stdio.h>
void first(int n, int arr[][100])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<=i; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
}
void second(int n, int arr[][100])
{
for(int i=n-1; i>=0; i--)
{
for(int j=0; j<n-i-1; j++)
printf(" ");
for(int j=0; j<=i; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
}
void third(int n, int arr[][100])
{
int x, y;
for(int i=0; i<n; i++)
{
y = n-1;
x = i;
for(int j=0; j<=i; j++)
{
printf("%d ", arr[y][x]);
x--;
y--;
}
printf("\n");
}
}
int main()
{
int n, m;
int arr[100][100] = {0, };
scanf("%d %d", &n, &m);
if(n<1||n>30||m<1||m>3)
{
printf("INPUT ERROR!");
return 0;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<=i; j++)
{
if(!j||j==i)
arr[i][j] = 1;
else
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
}
}
switch(m)
{
case 1:
first(n, arr);
break;
case 2:
second(n, arr);
break;
case 3:
third(n, arr);
break;
}
return 0;
}
'코딩 > Beginner Coder' 카테고리의 다른 글
1331 : 문자마름모 (0) | 2020.05.12 |
---|---|
1707 : 달팽이사각형 (0) | 2020.05.12 |
1337 : 달팽이삼각형 (0) | 2020.05.07 |
1641 : 숫자삼각형 (0) | 2020.05.07 |
1329 : 별삼각형3 (0) | 2020.05.06 |