조회 수 423 추천 수 0 댓글 0

직사각형의 왼쪽 아래의 x, y 좌표와 가로의 길이 세로의 길이를 저장할 수 있는 구조체 자료형을 만들고 두 개의 직사각형 자료를 입력받아 두 직사각형을 포함하는 최소의 직사각형 자료를 구하여 구조체 변수에 저장하고 출력하는 프로그램을 작성하시오.

단, 모든 입력값은 100을 넘지 않는다.



#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MAX 10

struct pos
{  
    int xpos;
    int ypos;
    int wid;
    int len;
};
void change(int d)
{
     int space=0;
     int wall=1;
     int otherw=2;
     int sumw=3;
     int setcolor[4]={15,13,11,10};
    
     HANDLE hConsole;

     hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
     SetConsoleTextAttribute(hConsole, setcolor[d]);

     char str[4][3]={"■","■","■","■"};
     printf("%s",&str[d][0]);
}//change

int main(void)
{
    struct pos x1,x2,b;
    int arr[MAX][MAX];
    int i,j;
    int brx,bry;
    int rx1,ry1,rx2,ry2;
   
    printf("두 개의 직사각형 자료를 입력하시오.(단, 모든 입력값은 100을 넘지 않는다.)\n");
    scanf("%d %d %d %d",&x1.xpos,&x1.ypos,&x1.wid,&x1.len);
    scanf("%d %d %d %d",&x2.xpos,&x2.ypos,&x2.wid,&x2.len);
    printf("\n");
    for(i=0;i<MAX;i++)
       for(j=0;j<MAX;j++)
          arr[i][j]=0;
   
    rx1=x1.xpos+x1.wid-1;
    ry1=x1.ypos+x1.len-1;
    rx2=x2.xpos+x2.wid-1;
    ry2=x2.ypos+x2.len-1;
   
    for(i=x1.ypos;i<ry1+1;i++)
       for(j=x1.xpos;j<rx1+1;j++)
          arr[i][j]++;
   
    for(i=x2.ypos;i<ry2+1;i++)
       for(j=x2.xpos;j<rx2+1;j++)
          arr[i][j]++;
   
    for(i=MAX-1;i>=0;i--)
    { 
       for(j=0;j<MAX;j++)
          change(arr[i][j]);
       printf("\n");
    }
    printf("\n두 개의 직사각형\n\n");
   
    if(x1.xpos<x2.xpos)
       b.xpos=x1.xpos;
    else
       b.xpos=x2.xpos;
   
    if(x1.ypos<x2.ypos)
       b.ypos=x1.ypos;
    else
       b.ypos=x2.ypos;
      
    if(rx1>rx2)
       brx=rx1;
    else
       brx=rx2;
   
    if(ry1>ry2)
       bry=ry1;
    else
       bry=ry2;
   
    b.wid=brx-b.xpos+1;
    b.len=bry-b.ypos+1;
   
    for(i=b.ypos;i<bry+1;i++)
       for(j=b.xpos;j<brx+1;j++)
          arr[i][j]=3;
   
    for(i=MAX-1;i>=0;i--)
    { 
       for(j=0;j<MAX;j++)
          change(arr[i][j]);
       printf("\n");
    }
    printf("\n두 직사각형을 포함하는 최소 직사각형\n\n");
    system("pause");
    return 0;
}



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. 좋은아빠되기 2019.02.15 299
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1079
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2397
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10317
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4719
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8279
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 18956
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 37861
370 정올 반복제어문3 형성평가4 정승준 2018.03.10 244
369 정올 반복제어문3 형성평가3 정승준 2018.03.10 164
368 정올 반복제어문3 형성평가2 정승준 2018.03.10 134
367 정올 반복제어문3 형성평가1 정승준 2018.03.03 129
366 링크드 리스트 예제 조정미 2018.03.03 253
365 정올 반복제어문3 자가진단7 정승준 2018.03.03 140
364 정올 반복제어문3 자가진단4(반대) 정승준 2018.03.03 143
363 정올 반복제어문3 자가진단6 정승준 2018.03.03 192
362 정올 - 알고리즘 - 냉장고(1828) 조정미 2018.03.03 831
361 정올 - 알고리즘 - 짚신벌레(1822) - 완 조정미 2018.03.03 953
360 정올 - 알고리즘 - 짚신벌레(1822) - 미완2 조정미 2018.03.03 145
359 정올 - 알고리즘 - 짚신벌레(1822) - 미완 조정미 2018.02.24 227
358 정올 - 알고리즘 - 동전자판기(下)(1183) 조정미 2018.02.24 824
357 정올 - 알고리즘 - 벽장문의 이동(1409) 조정미 2018.02.10 558
356 정올 반복제어문3 자가진단5 정승준 2018.02.10 172
355 정올 - 알고리즘 - 회의실 배정(1370) 조정미 2018.02.10 981
354 정올 - 실력키우기 - 색종이(고)(1124) 조정미 2018.02.10 1250
353 정올 반복제어문3 자가진단4 정승준 2018.02.03 123
352 정올 - 실력키우기 - 후위표기법(1221) 조정미 2018.02.03 1058
351 정올 반복제어문3 자가진단2 정승준 2018.01.27 112
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 26 Next
/ 26