조회 수 437 추천 수 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 528
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1285
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2606
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10594
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4943
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8530
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19175
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38076
170 정올 기초다지기(함수3-자가진단5)[for버전] killerjack 2014.08.16 685
169 정올 기초다지기(함수3-형성평가1) killerjack 2014.08.30 931
168 정올 기초다지기(함수3-형성평가2) killerjack 2014.08.30 659
167 정올 기초다지기(함수3-형성평가3) killerjack 2014.08.30 1970
166 정올 기초다지기(함수3-형성평가4) killerjack 2014.08.30 1091
165 정올 기초다지기(함수3-형성평가5) killerjack 2014.08.30 985
164 정올 기초다지기(함수3-형성평가6) killerjack 2014.09.20 803
163 정올 달팽이 사각형 조정미 2017.11.18 269
162 정올 달팽이 사각형(재귀) 조정미 2017.11.18 201
161 정올 달팽이 삼각형 조정미 2017.11.18 577
160 정올 달팽이 삼각형(for) 조정미 2017.11.18 289
159 정올 대각선 지그재그 조정미 2017.11.18 735
158 정올 대각선지그재그 조정미 2017.11.25 350
157 정올 떡 먹는 호랑이 조정미 2017.11.25 582
156 정올 문자마름모 조정미 2017.11.18 159
155 정올 문자마름모 조정미 2017.11.25 296
154 정올 반복제어문2 형성평가 6 선우 2016.03.11 282
153 정올 반복제어문2 형성평가4 선우 2016.03.11 224
152 정올 반복제어문2 형성평가7 정승준 2018.01.27 179
151 정올 반복제어문2 형성평가8 정승준 2018.01.27 193
Board Pagination Prev 1 ... 13 14 15 16 17 18 19 20 21 22 ... 26 Next
/ 26