336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
숫자 출력 시리즈 1편입니다.
구 버전 Borland C++용 함수들을 썼기 때문에 현재 버전의 Visual Studio에서는 컴파일이 안 될 수 있습니다.
/* * 삼각, 역삼각 숫자 출력 프로그램 * 작성자: tapitolife * http://tapito.tistory.com * http://kin.naver.com/profile/dkhighest * 사용 환경: Borland C++ 3.1, Windows 3.1 * */ #include <stdio.h> #include <conio.h> #define BUFCOL 5 // 버퍼의 열 수를 설정합니다. #define BUFROW 8 // 버퍼의 행 수를 설정합니다. #define NUMMIN 1 // 숫자의 최소 값을 설정합니다. #define NUMMAX 40 // 숫자의 최대 값을 설정합니다. // 버퍼의 열이 홀수인지 검사합니다. #if (((BUFCOL >> 1) << 1) == BUFCOL) #error "버퍼의 열은 홀수여야 합니다." #error "BUFCOL % 2 != 1" #endif // NUMMIN, NUMMAX의 범위를 검사합니다. #if (!((1 <= NUMMIN) && (NUMMIN <= NUMMAX))) #error "!(1 <= NUMMIN <= NUMMAX)" #endif int forecolor(const int depth); int backcolor(const int depth); int main() { // 출력할 내용이 보관되는 2차원 배열 버퍼 int aBuffer[BUFCOL][BUFROW]; // 배열에 접근하기 위한 인덱스 변수 int i, j; // 배열에 넣을 값과 그 증감 int value = 1, vstep = +1; // 색상을 지정할 때 쓰이는 깊이와 그 증감 int depth = 0, dstep = +1; // 행에 채워넣을 숫자의 수 int rowcount = 1, rstep = +1; // 텍스트 서식 정보 struct text_info ti; clrscr(); // 직각삼각형으로 숫자들을 배열합니다. for(i = 0; i < BUFROW; i++) // n회 수행 { for(j = 0; j < BUFCOL; j++) // n회 수행 { if(j < rowcount) // 1 { aBuffer[j][i] = value; // 3 if(NUMMIN == NUMMAX) vstep = 0; // 2 else if(value == NUMMIN) vstep = +1; // 2 else if(value == NUMMAX) vstep = -1; // 2 value += vstep; // 2 } else { aBuffer[j][i] = 0; // 3 } } rowcount += rstep; } // 연산 속도 O(n) = n^2 gettextinfo(&ti); window(30, 9, 50, 19); for(i = 0; i < BUFROW; i++) { depth = i; dstep = -1; for(j = 0; j < BUFCOL; j++) { textcolor(forecolor(depth)); cprintf("%02d ", aBuffer[j][i]); depth += dstep; } cprintf("\n\r"); } textcolor(ti.normattr); getch(); } int forecolor(const int depth) { switch(depth) { case 0 : return LIGHTRED; case 1 : return LIGHTMAGENTA; case 2 : return YELLOW; case 3 : return LIGHTGREEN; case 4 : return LIGHTBLUE; case 5 : return BLUE; case 6 : return MAGENTA; default : return LIGHTCYAN; } }
출력 결과:
매크로 상수값을 약간 조정하면 이렇게도 크기를 바꿀 수 있습니다.
'자작 프로그램' 카테고리의 다른 글
자바로 구현한 로또 번호 생성 프로그램 (0) | 2012.02.03 |
---|---|
완전 심플 메모장 프로그램 (옴니아 Windows CE용) (0) | 2011.10.09 |
C++로 구현해 본 간단 스택 (0) | 2011.07.19 |
Windows Mobile용 스톱워치 프로그램 (0) | 2011.04.25 |
간단한 C# LINQ 식 예제 (0) | 2011.03.20 |