| 
 [ Source Code ]#include <stdio.h>
// 필요한 함수 선언 void f_I ( char [][251], int, int );void f_L ( char [][251], int, int, char );
 void f_V ( char [][251], int, int, int, char );
 void f_H ( char [][251], int, int, int, char );
 void f_K ( char [][251], int, int, int, int, char );
 void f_F ( char [][251], int, int, int, int, char, char );
 void f_S ( char [][251], int, int, char * );
 int main ( void ){
         // 필요한 변수 선언char command, defaultColor, color, name[12], field[251][251];
 int m, n, x, y, x1, y1, x2, y2, temp;
         // 루프돌면서 X나올때까지 명령을 받아들인다.while ( 1 ) {
 scanf ( “%c“, &command );
                 // 명령어가 ‘X’이면 프로그램 종료 if ( command == ‘X’ ) {
 break;
 }
                 // X이외 명령어에 따라 입력받고 함수들 호출 switch ( command ) {
 case ‘I’ :
 scanf ( “%d%d“, &m, &n );
 f_I ( field, m, n );
 break;
                 case ‘C’ :f_I ( field, m, n );
 break;
                 case ‘L’ :scanf ( “%d%d“, &x, &y );
 getchar ();
 scanf ( “%c“, &color );
 f_L ( field, x, y, color );
 break;
                 case ‘V’ :scanf ( “%d%d%d“, &x, &y1, &y2 );
 getchar ();
 scanf ( “%c“, &color );
 if ( y1 > y2 ) {
 temp = y2;
 y2 = y1;
 y1 = temp;
 }
 f_V ( field, x, y1, y2, color );
 break;
                 case ‘H’ :scanf ( “%d%d%d“, &x1, &x2, &y );
 getchar ();
 scanf ( “%c“, &color );
 if ( x1 > x2 ) {
 temp = x2;
 x2 = x1;
 x1 = temp;
 }
 f_H ( field, x1, x2, y, color );
 break;
                 case ‘K’ :scanf ( “%d%d%d%d“, &x1, &y1, &x2, &y2 );
 getchar ();
 scanf ( “%c“, &color );
 if ( x1 > x2 ) {
 temp = x2;
 x2 = x1;
 x1 = temp;
 }
 if ( y1 > y2 ) {
 temp = y2;
 y2 = y1;
 y1 = temp;
 }
 f_K ( field, x1, y1, x2, y2, color );
 break;
                 case ‘F’ :scanf ( “%d%d“, &x, &y );
 getchar ();
 scanf ( “%c“, &color );
 defaultColor = field[y][x];
 if ( color == defaultColor )        break;
 f_F ( field, x, y, m, n, defaultColor, color );
 break;
                 case ‘S’ :scanf ( “%s“, name );
 f_S ( field, m, n, name );
 break;
                 default :continue;
 break;
                 }}
         return 0; } // I명령용 함수void f_I ( char f_field[][251], int f_x, int f_y )
 {
 
  
  
         int loop_x, loop_y;         for ( loop_x = 1 ; loop_x <= f_x ; loop_x++ ) {for ( loop_y = 1 ; loop_y <= f_y ; loop_y++ ) {
 f_field[loop_y][loop_x] = ‘O’;
 }
 }
 } // L명령용 함수void f_L ( char f_field[][251], int f_x, int f_y, char f_color )
 {
         f_field[f_y][f_x] = f_color; } // V명령용 함수void f_V ( char f_field[][251], int f_x, int f_y1, int f_y2, char f_color )
 {
         int loop_y;         for ( loop_y = f_y1 ; loop_y <= f_y2 ; loop_y++ ) {f_field[loop_y][f_x] = f_color;
 }
 } // H명령용 함수void f_H ( char f_field[][251], int f_x1, int f_x2, int f_y, char f_color )
 {
         int loop_x;         for ( loop_x = f_x1 ; loop_x <= f_x2 ; loop_x++ ) {f_field[f_y][loop_x] = f_color;
 }
 } // K명령용 함수void f_K ( char f_field[][251], int f_x1, int f_y1, int f_x2, int f_y2, char f_color )
 {
         int loop_x, loop_y;         for ( loop_y = f_y1 ; loop_y <= f_y2 ; loop_y++ ) {for ( loop_x = f_x1 ; loop_x <= f_x2 ; loop_x++ ) {
 f_field[loop_y][loop_x] = f_color;
 }
 }
 } // F명령용 함수 void f_F ( char f_field[][251], int f_x, int f_y, int m, int n, char f_color, char f_changeColor )
 {
 f_field[f_y][f_x] = f_changeColor;
         if ( f_x > 1 && f_field[f_y][f_x-1] == f_color )        f_F ( f_field, f_x-1, f_y, m, n, f_color, f_changeColor );
 if ( f_x < m && f_field[f_y][f_x+1] == f_color )
 f_F ( f_field, f_x+1, f_y, m, n, f_color, f_changeColor );
 if ( f_y > 1 && f_field[f_y-1][f_x] == f_color )
 f_F ( f_field, f_x, f_y-1, m, n, f_color, f_changeColor );
 if ( f_y < n && f_field[f_y+1][f_x] == f_color )
 f_F ( f_field, f_x, f_y+1, m, n, f_color, f_changeColor );
 } // S명령용 함수 void f_S ( char f_field[][251], int f_m, int f_n, char *f_name )
 {
         int loop_x, loop_y;         printf ( “%s\n“, f_name );for ( loop_y = 1 ; loop_y <= f_n ; loop_y++ ) {
 for ( loop_x = 1 ; loop_x <= f_m ; loop_x++ ) {
 printf ( “%c“, f_field[loop_y][loop_x] );
 }
 printf ( “\n“ );
 }
 }
 | 
댓글 남기기