조회 수 433 추천 수 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 467
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1227
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2540
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10509
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4879
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8463
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19109
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38028
250 정올 - 알고리즘 - 영역구하기(1457) 조정미 2018.03.31 445
249 정올 - 알고리즘 - 색종이만들기(1335) 조정미 2018.03.31 606
248 정올 - 알고리즘 - 색상환(2264) - Time Limit Exceed 조정미 2018.05.05 273
247 정올 - 알고리즘 - 벽장문의 이동(1409) 조정미 2018.02.10 568
246 정올 - 알고리즘 - 배낭채우기1(1077) 조정미 2018.03.31 841
245 정올 - 알고리즘 - 동전자판기(下)(1183) 조정미 2018.02.24 836
244 정올 - 알고리즘 - 돌다리건너기(1014) - Time Limit Exceed 조정미 2018.04.07 425
243 정올 - 알고리즘 - 냉장고(1828) 조정미 2018.03.03 841
242 정올 - 알고리즘 - 꿀꿀이 축제(2109) - Time Limit Exceed 조정미 2018.04.28 346
241 정올 - 알고리즘 - 극장좌석(1848) 조정미 2018.04.21 465
240 정올 - 실전대비 - 질량계산(1091) 조정미 2018.06.02 311
239 정올 - 실전대비 - 줄 세우기(1003) 조정미 2018.05.26 572
238 정올 - 실전대비 - 오류교정(1037) 조정미 2018.06.09 180
237 정올 - 실전대비 - 소수369(1011) 조정미 2018.05.26 329
236 정올 - 실전대비 - 선 긋기 게임(1094) - Accepted(92) 조정미 2018.06.02 228
235 정올 - 실전대비 - 비밀번호(1344) 조정미 2018.06.16 193
234 정올 - 실전대비 - 단어맞추기(1034) 조정미 2018.05.26 703
233 정올 - 실전대비 - 개미수열(1354) - Runtime Error 조정미 2018.06.09 350
232 정올 - 실전대비 - RESETO(1232) 조정미 2018.06.02 163
231 정올 - 실전대비 - PERKET(1127) 조정미 2018.06.02 160
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 26 Next
/ 26