알고리즘
C++ 별찍기
Chars4785
2018. 12. 18. 16:08
#include <iostream>
using namespace std;
int main() {
cout << "2번 별을 출력하는 프로그램\n\n";
for (int i = 0; i <= 9; i++)
{
for (int k = 0; k <= 8-i; k++)
{
cout << " ";
}
for (int j = 0; j <= i; j++)
{
cout << "*";
}
cout << "\n";
}
cout << "\n";
}
생각보다 쉽지만 생각하게 만드는 부분이다.
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
for(int i=0 ;i< 10 ;i++)
처음은 시작부분 뒤에는 끝나는 것을 설정 할수 있다.
둘의 간격 차이를 유지하면서 변화 시키면 된다.
i=0 -> 9 까지
i=-1 -> 8 까지
이런식으로 간격에 대한 생각은 계속 해줘야 한다.
#include <iostream>
using namespace std;
int main() {
int num;
cin >> num;
for(int i=0;i<num;i++)
{
for(int j=0; j < (num-i)-1;j++)
cout<<" ";
for(int j=0;j<2*i+1;j++)
cout<<"*";
cout<<endl;
}
cout << "\n";
}
홀수 별을 출력하기 위해서는 등차수열을 생각하면 된다.
num: 4
공백: 3, 2 ,1
별 :1, 3, 5
별의 개수는 2k+1 이 되기 때문에
첫항은 1이고 등차는 2가 되는 식이 된다.
하지만 카운팅이 n=0 부터 시작하기 때문에 일반식은 2(k+1)-1 이 된다.