본문 바로가기
프로그램/C언어 1000제

C언어 76제] C언어 콘서트 CHAPTER 9 Programming 6 5번 문제에서 영상밝기를 증가시키는 함수, 출력함수 등등을 추가하기 p372

by 건티 2021. 12. 28.
728x90

출처 : 반크_세계무형유산 아리랑, 판소리

 

참고풀이]

//Dev-C++ 5.11로 작업함.
#include <stdio.h>
#include <windows.h>
#define HEIGHT 10
#define WIDTH 10

void gotoxy(int x, int y)
{
   COORD Pos={x,y};
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}

void Menu();
void brighten_image(char *p, int w, int h);
void darken_image(char *p, int n);
void print_image(char *p, int w, int h);

int i;

int main()
{
   int r,c;//반복변수
   int chk;//밝게, 어둡게 선택변수 
   char image[HEIGHT * WIDTH]={
      0,0,0,0,9,0,0,0,0,0,
      0,0,0,9,9,0,0,0,0,0,
      0,0,9,0,9,0,0,0,0,0,
      0,0,0,0,8,0,0,0,0,0,
      0,0,0,0,9,0,0,0,0,0,
      0,0,0,0,7,0,0,0,0,0,
      0,0,0,0,8,0,0,0,0,0,
      0,0,0,0,9,0,0,0,0,0,
      0,0,0,0,9,0,0,0,0,0,
      0,0,6,6,9,7,7,0,0,0
   };

   gotoxy(0,6);
   printf("원본 영상의 픽셀 밝기]\n");
   print_image(image,WIDTH,HEIGHT);

   while(1)
   {
      while(1)
      {
         Menu();
         scanf("%d",&chk);

         if(chk==0 || chk==1 || chk==2) break;

         gotoxy(0,1);printf("0,1,2수만 입력하세요.");
         gotoxy(0,2);printf("다시입력하세요...\n");
         Sleep(2000);
      }
      if(chk==0) break;

      switch(chk)
      {
         case 1:
            gotoxy(0,6);
            printf("원본 영상을 밝게합니다.\n");
            brighten_image(image, WIDTH, HEIGHT);
            print_image(image,WIDTH,HEIGHT);
            break;
         case 2:
            gotoxy(0,6);
            printf("원본 영상을 어둡게합니다.\n");
            darken_image(image, WIDTH*HEIGHT);
            print_image(image,WIDTH,HEIGHT);
      }
   }

   gotoxy(0,18);printf("수고하셨습니다.\n");
   return 0;
}

void brighten_image(char *p, int w, int h)
{
   for(i=0;i<w*h;i++)
      if(p[i]<=9 && p[i]>0)
         p[i]--;
}

void darken_image(char *p, int n)
{
   for(i=0;i<n;i++)
      if(p[i]<9 && p[i]>=0)
         p[i]++;
}

void print_image(char *p, int w, int h)
{
   for(i=0;i<w*h;i++)
   {
      printf("%2d",p[i]);
      if((i+1)%10==0) printf("\n");
   }
}

void Menu()
{
   gotoxy(0,0);
   printf("  영상을 밝  게 : 1\n");
   printf("  영상을 어둡게 : 2\n");
   printf("  작  업 종  료 : 0\n");
   printf("======================\n");
   printf("번호를 선택하세요 : ");
}

 

참고풀이 결과]

메뉴와 원본영상)

 

밝기를 두번 진행 했을 때)

 

어둡게를 두번 진행 했을 때)

 

작업을 끝냈을 때)

 

번호를 잘 못 입력했을 때)

 

 

 

대한민국의 아름다운 영토, 독도의 겨울

 

반응형

댓글