교양수업인 컴퓨터 프로그래밍의 과제입니다..^^;;
마름모.. 정말 힘들었어요.. 그래서.. 마름모.. 다른거 참고하면서 했습니다.
===============
숙제 : 마름모를 찍어내야합니다.
조건 : 음수입력시, 짝수입력시, 출력하는 오류메시지를 따로 구성하세요..
===============
강평 1 : 비주얼 스튜디오 6.0 왜 자꾸 컴파일할때 죽을까요??_-;; 진짜로 죽여주길 바라는걸까요??
이래서 리눅스에서 컴파일 하는걸 좋아합니다..
강평 2 : 만약, 한두번 에러검사후 음수를 넣어버리면 안되니까.. 제대로 된 수를 넣을때까지 계속 에러를 내뱉으라고 while문으로 돌렸습니다.. 착하죠?
강평 3 : 주석과 가독성이 중요하다고 합니다.. 그래서 주석처리도 좀 했구요..
강평 4 : 사용자 정의 함수에 (int n)처럼 넣으려니까 안되네요.. type이 먼저 지정되어 있다나.. 사실, 정수로 받은 n을 다시 정수 n으로 넣는것이잖아요?? 그래서 그냥 n을 입력했더니 잘 됩니다.^^;; 소스가 어떻건 간에. 프로그램이 제대로 돌아가기면 하면 되는것이니까요..
강평 5 : 여름방학때 C언어를 집중적으로 배워볼려구요.. 저의 꿈은, 수학계산프로그램을 만드는 겁니다. 제일 먼저 determinant를 구하는 것을 만들고 싶네요.. n by n과, n by m 두가지 경우가 있으니.. 복잡하겠군요..^^
====================================================
#include <stdio.h>
#include <math.h>
//마름모 찍기
//
//3이상의 수를 입력받아야 함.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------별찍기 함수 시작.
int rhombus(int n)
{
int i, j, tmp;
tmp = n / 2;//높이 나누기 2값을 저장
for(i=0; i<n; i++) //---------------------------전체 높이만큼 실행
{
for(j=0; j<n; j++)//-----------------각 줄마다 실행.
{
if(j >= abs(tmp - i) && j < n - abs(tmp -i))
{//--------------------------별표찍기 검산.
//한 줄에서, 별표는, (전체줄수-1)/2의 값에 해당 줄 수를 뺀 값보다 큰곳, 전체줄수에서 (전체줄수-1)/2를 뺀 곳에 찍힌다.
//위에서, n = 5이고, i = 0이라면, 첫번째 줄에서 별을 찍는것이며,
//첫번째줄에서는 별이 제일 가운데 한개 찍혀야만 한다.
//(5-1)/2 = 2이고, 별은 2보다 크거나 같거나, 5 - 2 = 3번째보다 작은곳에 찍힌다. 별은 2번째 줄에 찍히는데,
//처음 시작을 0부터 했으므로, 별은 2 + 1인 3번째에 찍힌다.
printf("*");
}
else//--------------------------별표가 아닌곳은 전부 공백처리
{
printf(" ");
}
}
printf("\n");//한줄이 끝나면 다음 줄로 바꾼다.
}
printf("\n");//모양이 이쁘게 하기 위해..
//printf("%d \n", n); //코딩할때 숫자 보려고 쓴것..
//printf("%d \n", tmp);//역시나 숫자 확인용..
return 0;
}
//----------------------------------------별찍기 함수 끝
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------메인 함수 시작.
int main()
{
int n;
printf("마름모의 높이를 입력해 주세요. 높이는 1이상의 홀수입니다. :");
scanf("%d", &n);//n : 입력받는 수
while( n <= 1 || n % 2 == 0)//전체적으로 n이 1보다 작거나 같은경우, 혹은 n이 짝수인 모든 경우에 대해서 검산
{
if( n <= 1)//n이 1보다 작은경우
{
if( n = 0)//그중 n이 0으로 입력된 경우
{
printf("0이 입력될 수는 없습니다. 다시 입력해 주세요. :");
scanf("%d", n);
}
if( n < 0)//n이 음수인 경우
{
printf("음수를 입력하셨습니다. 양수로 다시 입력해 주세요. :");
scanf("%d", &n);
}
//////위의 경우의 수를 제외한 나머지. 여기서는 n = 1인경우 하나만 존재.
printf("마름모의 높이는 1 보다 큰 양의 홀수입니다. 다시 입력해 주세요. :");
scanf("%d", &n);
}
if( n > 1)//n이 1보다 클 경우. n이 짝수인지만 검산하면 된다.
{
if( n % 2 == 0)//n이 짝수인 경우를 검산.
{
printf("짝수를 입력하셨습니다. \n");
printf("마름모의 높이는 홀수만 가능합니다. 다시 입력해 주세요. :");
scanf("%d", &n);
}
}
}
/////////////////////////////////////////////검산 완료
//----------------------------------------------------------------------별찍기 함수 도입.
rhombus(n);//rhombus는 마름모라는 뜻.. 사용자 정의 함수 도입. int n으로 하지 않은 이유는, n이 정수형으로 선언되어 있음.
//int n으로 하면 에러가 납니다.^ ^
return 0;
}


















