컴공생의 다이어리

[c++] 문자(별표, 다이아몬드) 찍기 본문

Development/C & C++

[c++] 문자(별표, 다이아몬드) 찍기

컴공 K 2021. 2. 9. 03:11

문제

도형을 별표(=asterisk)와 다이아몬드로 그리는 프로그램을 작성하시오. 프로그램은 도형의 크기(N)를 입력으로 사용한다. N은 5에서 29사이의 홀수이며, 올바른 입력을 한다면 별표와 다이아몬드를 그릴 문자를 각각 입력해 출력하시오.

 

 

 

코드

#include <iostream>
using namespace std;

void Ast(int ast, char c)//asterisk function
{
	int k = (ast - 1) / 2;
	for (int i = 0; i < k; i++)
	{
		for (int j = 0; j < i; j++)
			cout << ' ';
		cout << c;
		for (int j2 = k - (i + 1); j2 > 0; j2--)
			cout << ' ';
		cout << c;
		for (int j3 = k - (i + 1); j3 > 0; j3--)
			cout << ' ';
		cout << c << endl;
	}
	for (int i = 0; i < k; i++)
		cout << ' ';
	cout << c << endl;
	for (int i = k; i > 0; i--)
	{
		for (int j = 0; j < i - 1; j++)
			cout << ' ';
		cout << c;
		for (int j2 = 0; j2 < k - i; j2++)
			cout << ' ';
		cout << c;
		for (int j3 = 0; j3 < k - i; j3++)
			cout << ' ';
		cout << c << endl;
	}
	return;
}
void Dia(int dia, char c)//Diamond function
{
	int k = (dia - 1) / 2;
	for (int i = 0; i < k + 1; i++)
	{
		for (int j = k - i; j > 0; j--)
			cout << ' ';
		for (int j2 = 0; j2 < (1 + 2 * i); j2++)
			cout << c;
		cout << endl;
	}
	for (int i = 0; i < k; i++)
	{
		for (int j = 0; j < i + 1; j++)
			cout << ' ';
		for (int j2 = 0; j2 < dia - 2 * (i + 1); j2++)
			cout << c;
		cout << endl;
	}
	return;
}
int main()
{
	int ast;		//별표 사이즈
	int dia;		//다이아몬드 사이즈
	char c1, c2;	//별표 문자, 다이아몬드 문자
	while (1)
	{
		cout << "출력할 별표(asterisk)의 사이즈 : ";
		cin >> ast;
		if (ast % 2 == 0 || ast < 5 || ast > 30)
			cout << "잘못 입력하셨습니다. 5 ~ 29 사이의 홀수를 입력하세요!" << endl;
		else
			break;
	}
	cout << "출력할 별표(asterisk)의 문자 : ";
	cin >> c1;
	Ast(ast,c1);
	cout << endl;

	while (1)
	{
		cout << "출력할 다이아몬드(diamond)의 사이즈 : ";
		cin >> dia;
		if (dia % 2 == 0 || dia < 5 || dia > 30)
			cout << "잘못 입력하셨습니다. 5 ~ 29 사이의 홀수를 입력하세요!" << endl;
		else
			break;
	}
	cout << "출력할 다이아몬드(diamond)의 문자 : ";
	cin >> c2;
	Dia(dia, c2);
	return 0;
}

 

 

 

출력결과

728x90
반응형
Comments