2017년 1월 23일 월요일

[JAVA]Histogram program

 

입력 값들의 히스토그램을 만드는 프로그램


1] 문제
 
입력 값들의 분포를 시각적으로 볼 수 있는 히스토그램을 만드는 프로그램을 작성하시오. 이 프로그램은 1100사이의 정수 10개를 일어야 하고 1~10, 11~20 등의 범위에 드는 값들의 횟수를 아래와 같이 출력하여야 한다.
 
ex]
1-10 : ****
11-20 :**
21-30 :**
.....
 
 
2] 알고리즘 및 설명
 
Step 1 : 배열 2(Sting[] arr, int[] num)를 선언한다.
num배열은 값은 받아 저장할 배열이고,
arr배열num의 입력 값에 따라 ‘*’를 넣어 시각적으로 출력할 배열이다.
 
Step 2 : 배열 num1-100의 정수 10개를 입력 받는다.
Step 3 : ((i*10)+1)((i+1)*10)를 통해 arr배열에 ‘*’을 채워 넣는다.
I0을 넣으면 1-11이 되고 1를 넣으면 11-20이 되는 식이다.
 
Step 4 : 반복문을 통해 arr배열을 출력하여, 입력 값들의 분포를 출력한다.
 
 
 
3] 프로그램 코드

import java.util.*;

public class arrHistogram {
public static void main(String args[]) {

String[] arr = new String[10];

int[] num = new int[10];
Scanner scan = new Scanner(System.in);

for (int i = 0; i < 10; i++) {
     System.out.println((i + 1)+"번째 값을 입력하세요.");
     num[i] = scan.nextInt();
} // 배열 num에 1-100개 정수 10개를 입력받는다.

for (int i = 0; i < 10; i++) {
arr[i] = ((i * 10) + 1) + "-" + ((i + 1) * 10) + ":";

    // arr의 0번째 인덱스에 값의 범위를 표시하는 String을 넣는다.

for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
if ((i * 10)+1<=num[j] && num[j]<=(i+1)*10)
arr[i] += "*";
   // 배열 num의 인덱스의 값에 따라 배열arr에 ‘*’를 넣는다.

for (int i = 0; i < 10; i++) {

System.out.println(arr[i]);
} // 배열 arr을 출력한다.
}

}

 
 
4] 실행 결과























댓글 없음:

댓글 쓰기