조회 수 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 468
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1228
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2541
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10512
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4884
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8466
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19109
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38030
510 "name age"형식으로 이름과 나이 사이에 공백하나를 주고 입력하여 이름과 나이를 비교하기 killerjack 2014.04.05 2136
509 (cmd) tasklist /fi "imagename eq *" killerjack 2014.03.29 2121
508 0이 입력되면 입력 중지하고 입력된 숫자 교환하기 file 박윤택 2013.12.28 1784
507 10/29문자열 선우 2016.10.29 115
506 100이하 가장큰수 100이상 가장작은수 구하기 (승민) 승민 2016.04.16 529
505 10이하 숫자 두개작은수 부터 큰수까지 곱셈식(승민) 승민 2016.07.16 202
504 10진법 2진법으로 변환하기 killerjack 2014.03.08 3917
503 10진법 2진법으로 변환하기2 killerjack 2014.03.08 2220
502 120 : 선택제어문 - 형성평가1 adbdcd123 2018.08.25 57
501 121 : 선택제어문 - 형성평가2 adbdcd123 2018.08.25 106
500 122 : 선택제어문 - 형성평가3 adbdcd123 2018.08.25 89
499 123 : 선택제어문 - 형성평가4 adbdcd123 2018.08.25 101
498 124 : 선택제어문 - 형성평가5 adbdcd123 2018.08.25 158
497 1부터 10까지 더하기 승민 2016.03.12 952
496 1부터 원하는 수까지의 2진법 출력하기 killerjack 2014.03.08 1733
495 1부터10까지 더하기(승민) 승민 2016.03.05 573
494 2016-03-05 첫번째 file 뚜디 2016.03.05 1599
493 2의 입력한수 만큼 제곱(승민) 승민 2016.08.13 358
492 2진수를 8진수로 조정미 2017.12.09 262
491 349쪽 문제 2번(승민) 승민 2016.05.28 90
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 26 Next
/ 26