[프로그래밍] [C언어]함수를 이용한 삼각형, 사각형, 다이아몬드 출력 프로그램
- 등록일 / 수정일
- 페이지 / 형식
- 자료평가
- 구매가격
- 2007.04.29 / 2019.12.24
- 10페이지 / zip (압축파일)
- 평가한 분이 없습니다. (구매금액의 3%지급)
- 900원
추천 연관자료
- 하고 싶은 말
-
함수를 이용하여 삼각형 사각형 다이아몬드를 출력하는 프로그램
내부가 비어있거나 꽉찬 도형 출력.
- 본문내용
-
(1) 프로그램 설명
연습문제 6.8은 정사각형, 삼각형, 다이아몬드, 직사각형을 함수를 이용하여 화면에 출력하여 주는 프로그램을 작성하는 문제이다. 여기서 각 도형은 내부가 채워져 있거나 비워져 있어야 하며 이는 유저의 선택에 따라 이루어 지며, X를 이용하여 도형을 나타내어 준다.
(2) 문제해결 접근 방식
1) 정사각형, 직사각형 출력의 문제
정사각형과 직사각형의 경우 가로, 세로가 균일한 모양으로 이루어져 있으므로 규칙적인 방법으로 만들 수 있을 것이다. 내부가 채워져 있는 경우 세로를 기준으로 한 줄씩 가로 크기로 채워 나가면 간단하게 만들 수 있을 것이다. 문제는 내부를 비우는 경우에 발생한다. 내부를 비우는 경우 젤 윗줄과 아랫줄은 채워줘야 하며 중간의 내부만을 비워야 할 것이다. 따라서 중간의 경우 양 사이드만 X를 출력하여 주고 중간은 빈칸을 출력하는 방법이 필요하다. 사각형의 경우 균일하게 빈칸이 출력되므로 가로 크기에서 양 사이드의 두 개의 X를 제외한 만큼 빈칸을 출력하고, 위/아래 줄은 구별하여 X로 채워 주는 방식으로 만들면 될 것이다.
2) 삼각형 출력의 문제
삼각형의 경우 두 가지의 문제점이 있다. 하나는 사이드의 빈칸을 출력해야 하는 것인데, 이 경우 앞부분의 빈칸은 그림에 영향이 있으나, 뒤쪽의 빈칸은 영향이 없기 때문에 생략해도 된다. 앞 칸의 빈칸은 꼭지점 부분에서 최대가 되며, 중간 점을 뺀 가로 사이즈의 반 만큼 출력해주어야 할 것이다. 이때 가로 사이즈는 현재라인을 높이의 역수로 계산하여 주면 간단하게 구할 수 있다. 또한 X로 내부를 채워 주는 것은 총 가로 사이즈에서 빈칸의 개수를 뺀 만큼 출력해 주면 될 것이다. 또 하나의 문제점은 내부가 비어있는 경우 인데, 이때 가장 윗줄과 아랫줄은 사각형과 마찬 가지로 X만 출력하면 되므로 사이드 빈칸은 앞서 설명한 방식으로 출력하고 위/아래 줄은 X만을 출력한다. 중간 부분의 경우 양 사이드만 X를 출력해주고, 내부의 빈칸은 두 개의 X 및 사이드 빈칸의 총 개수를 가로 사이즈에서 뺀 만큼 출력하여 주면 될 것이다.
3) 다이아몬드 출력의 문제
다이아몬드의 경우 삼각형과 역삼각형의 합으로 그릴 수 있다. 삼각형의 경우 앞서 설명한 방식으로 출력하면 되지만, 역삼각형의 경우는 다르다. 역삼각형은 다이어몬드의 중간부분이 두줄로 되지 않도록 하기 위해 첫 줄은 출력하지 않아야 한다. 또한 내부를 채우는 경우는 삼각형과 다르게 현재라인을 역수로 계산하지 않고 0부터 차례대로 거쳐가면서 삼각형 출력때와 동일한 방식에 의하면 될 것이다. 내부가 비어있는 경우도 양 사이드 X를 출력하고, 사이드 빈칸을 출력한 후 총 가로 사이즈에서 두 개의 X에서 빈칸을 뺀 만큼 내부 빈칸을 출력하여 주면 역삼각형을 그릴 수 있을 것이다. 이러한 방식의 삼각형, 역삼각형 그리는 함수를 순차적으로 호출하면 다이아몬드를 그릴 수 있다.
(3) 알고리즘 구현
1) 간략한 알고리즘
위 제시한 문제해결 방식에 의하여 알고리즘을 작성하면, 메인에서 어떤 도형을 그릴지 선택하는 부분이 필요하며, 이는 select변수를 이용하여 수행하게 된다. 그림을 선택하면 내부를 채울 것인지 빈 도형을 출력할 것인지 변수 in에 결과를 받아온다. 이때 in은 각 그림 함수의 파라미터로 쓰여질 것이다. 각 함수가 호출되면 해당하는 그림을 그릴 것이다. 정사각형의 경우 7 by 7, 삼각형의 경우 4 by 7, 다이아몬드의 경우 7 by 7, 직사각형의 경우 4 by 7을 출력한다. 사각형의 경우 두 개의 for문을 이용하여 세로의 길이 만큼 한 줄 씩 출력하며, 내부가 비어있는 경우는 중간 부분에서 내부에 빈칸을 출력한다. 삼각형의 경우 높이의 역순으로 for문을 돌리며, 앞쪽에 빈칸을 현재 첫 for문 카운터의 반만큼 빈칸을 출력하여 주고, 가로 길이 7에서 빈칸을 뺀 만큼 X를 출력한다. 내부를 비워 두는 경우는 첫 줄과 마지막 줄만 X를 모두 출력하고, 중간은 가로 길이에서 X 두 개 및 사이드 빈칸을 뺀 만큼 내부에 빈칸을 출력한다. 다이아몬드의 경우 삼각형을 출력하고, 역삼각형을 출력한다. 이때 역삼각형은 높이의 역순으로 삼각형을 출력하지 않고 정순으로 출력하여 준다. 이와 같은 내용을 알고리즘으로 표현하면 아래와 같다.
ⅰ. select에 도형 선택, in에 내부 내용 선택.
ⅱ. 정사각형의 경우로서 내부를 채울 때는 두 개의 for문을 7만큼 수행하며 X 채움.
ⅲ. 정사각형으로서 내부를 비울 때는 첫 for문을 7만큼 수행하며, 첫 줄 및 마지막 줄은 7 만큼 X 출력, 중간은 사이드만 X출력. 내부는 빈칸 출력.
ⅳ. 삼각형으로서 내부를 채울 때는 첫 for문을 높이의 역순으로 카운터 2만큼 빼면서 수행. 내부의 첫 for문은 빈칸을 현재 외부 for문의 카운터 반 만큼 빈칸 출력. 두 번째 내부 for문은 빈칸을 뺀 만큼 X 출력.
ⅴ. 삼각형으로서 내부를 비울 때는 첫 for문을 높이의 역순으로 카운터 2 만큼 빼면서 수행. 내부의 첫 for문은 빈칸을 현재 외부 for문의 카운터 반 만큼 빈칸 출력. 두 번째 for문은 첫 줄과 마지막 줄의 경우 X를 빈칸 만큼 빼고 출력. 그 외의 경우 사이드 X를 출력하고, 내부에는 두 개의 X 및 사이드 빈칸 수를 7에서 뺀 만큼 빈칸 출력.
ⅵ. 다이아몬드의 경우 삼각형 함수를 호출 후 역삼각형 함수를 호출. 역삼각형은 삼각형 함수에서 첫 for문을 역순으로 감소 시킨 것과 반대로 정순으로 증가 시키면서 연산.
ⅶ. 직사각형의 경우 높이 4, 가로 7만큼 정사각형과 같은 방식으로 연산.
위 제시된 7개의 경우에 따라 플로우 차트를 작성하면 다음과 같다. 다이아몬드와 같은 경우는 삼각형에 역삼각형을 더하기만 하면 되므로 여기서는 역삼각형 출력 플로우 차트만을 작성한다. 각 플로우 차트에서 i, j값은 i는 행을 j는 열을 나타내게 된다.
자료평가
-
아직 평가한 내용이 없습니다.
오늘 본 자료
더보기
최근 판매 자료
- LED기술 레포트
- LED에 모든것 레포트
- 아보가드로 상수 구하기
- 냉동만두의 HACCP시스템에 있어서의 효과적인 검증방법
- 유전자가위 기술 원리, 특징, 활용 및 향후전망 [유전자가위,유전자,유전자 치료,제한효소,징크핑거,탈렌,크리스퍼]
- 물리 실험 포사체운동 실험 [결과]
- [A+ 45 예비레포트,PSpice포함] 기초전자공학실험 - 차동 증폭기 회로
- [디지탈전자회로,전자공학] 디지탈전자회로 핵심요약정리
- [분석화학실험] report 6 Determination of chloride , the Fajans method
- 비디오 대여 시스템 배경도, 자료흐름도 그리기
저작권 관련 사항 정보 및 게시물 내용의 진실성에 대하여 레포트샵은 보증하지 아니하며, 해당 정보 및 게시물의 저작권과 기타 법적 책임은 자료 등록자에게 있습니다. 위 정보 및 게시물 내용의 불법적 이용, 무단 전재·배포는 금지됩니다. 저작권침해, 명예훼손 등 분쟁요소 발견시 고객센터에 신고해 주시기 바랍니다.