입력 값들의 히스토그램을 만드는 프로그램
1] 문제
입력 값들의 분포를 시각적으로 볼 수 있는 히스토그램을 만드는 프로그램을 작성하시오. 이 프로그램은 1과 100사이의 정수 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 : 배열 num에 1-100의 정수 10개를 입력 받는다.
Step 3 : ((i*10)+1)와 ((i+1)*10)를 통해 arr배열에 ‘*’을 채워 넣는다.
I에 0을 넣으면 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을 출력한다.
}
}
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] 실행 결과
댓글 없음:
댓글 쓰기