조회 수 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 313
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1095
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2407
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10358
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4730
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8313
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 18969
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 37872
250 중간 기말 점수 더하기 평균 등수, 평균/5해서 별개수(승민) 승민 2016.07.23 418
249 분수쇼 (승민) 승민 2016.07.23 133
248 숙제 함수1 형성평가5(승민) 승민 2016.07.16 136
247 입력숫자사각형 만들기(승민)+줄간격맞추기 승민 2016.07.16 1058
246 스태틱함수(승민) 승민 2016.07.16 109
245 10이하 숫자 두개작은수 부터 큰수까지 곱셈식(승민) 승민 2016.07.16 197
244 작은수 두배 큰수 절반 함수(승민) 승민 2016.07.16 76
243 함수2 자가진단7 선우 2016.07.09 147
242 세개의 실수를 받아 큰수는 올림 작은수는 버림 남은수는 반올림하기 선우 2016.07.02 185
241 원 반지름 구하기 선우 2016.07.02 476
240 절댓값 대소 구분 선우 2016.07.02 231
239 일정수 거듭제곱 승민 2016.07.02 395
238 n갯수만큼 내림차순 선우 2016.07.02 279
237 정사각형 숫자넣기 꺼꾸로(승민) 승민 2016.07.02 219
236 숫자3개 연속 더하기 승민 2016.06.18 401
235 함수 1 자가진단 8 선우 2016.06.18 120
234 섭씨 화씨 뭐고를지 선택후 계산(승민) 승민 2016.06.11 537
233 함수(승민) 승민 2016.06.04 114
232 349쪽 문제 2번(승민) 승민 2016.05.28 81
231 구구단 2차원 배열 사용해서 만들기(승민) 승민 2016.05.28 2397
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 26 Next
/ 26