[C] 가로 막대 그래프 그리기

Haeun Noh·2023년 1월 6일
0

C언어_예제

목록 보기
19/19

0107


값이 주어진 상태에서 값에 맞는 히스토그램을 *을 이용하여 그리시오.

문제 조건

  • int list[10] = {9,2,5,4,0,1,7,3,8,6};은 주어진다.

실행 예시

요소    값      히스토그램
 0       9      *********
 1       2      **
 2       5      *****
 3       4      ****
 4       0
 5       1      *
 6       7      *******
 7       3      ***
 8       8      ********
 9       6      ******

소스 코드

#include <stdio.h>

int main(void) {

	printf("요소\t값\t히스토그램\n");

	int value[10] = { 9,2,5,4,0,1,7,3,8,6 };
	int index = 10;

	for (int i = 0; i < index; i++) {
		printf("%2d\t%2d\t", i, value[i]);
		for (int cnt = 0; cnt < value[i]; cnt++)
			printf("*");
		printf("\n");
	}

	return 0;
}

소스 풀이

	printf("요소\t값\t히스토그램\n");

	int value[10] = { 9,2,5,4,0,1,7,3,8,6 };
	int index = 10;

히스토그램에 포함될 제목들을 출력한다.

값의 개수이자 값을 넣을 배열의 크기인 index10으로 초기화한다.
곧 히스토그램의 별의 갯수가 될 값들을 value배열로 넣어준다.


	for (int i = 0; i < index; i++) {
		printf("%2d\t%2d\t", i, value[i]);

index만큼 for문을 반복한다. 이는 별로 히스토그램을 각각의 값에 따라 그려주기 위함이다.

별을 그려주기 전에 먼저 인덱스 값인 i와 그 인덱스 값에 해당하는 방에 들어있는 value[i]값을 출력한다.
\t를 이용하여 간격을 맞춰준다.


		for (int cnt = 0; cnt < value[i]; cnt++)
			printf("*");
        printf("\n");
	}

cntvalue[i]보다 작을 때까지 while문을 반복하며 value[i]만큼의 *을 출력한다. 값만큼 출력한 후에는 \n을 이용해 줄바꿈을 한다.


실행 결과



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글