import java.io.*;

/*---------------------------------------------------------------------------------------------	
CS100 P3: Q4

Program reads in an arbitrary range of integers from the range 1 to 100 inclusive.  
Entering '0' signals that the user is finished inputting data.  A chart is then produced
that indicates how many input values fell in the ranges 1-10, 11-20, etc.

Author 	:   Alan Renaud (ajr5@cornell.edu)
Date		:   23 July 1999	
------------------------------------------------------------------------------------------------*/
class Histogram {
	
	static TokenReader in = new TokenReader(System.in);
	
	public static void main(String[] args) 
	{			
		intro();
		double val = getInput(">");
		if (val !=0) 
		{
			int[] freq = enterVals(val);
			printOutput(freq);
		}
		else
			bye();
	}
	
	/*---------------------------------------------------------------------------------------------	
	getInput
	
	input	:   	message string
	return	:	value input by user
	
	Returns value of user's input if the value lies in the interval [0-100]. 
	------------------------------------------------------------------------------------------------*/	
	private static double getInput(String message) 
	{
		System.out.print(message);
		System.out.flush();
		double val = in.readDouble();
		while ((val < 0)||(val > 100))
		{
			System.out.print("Number must be [1-100] : ");
			System.out.flush();
			val = in.readDouble();
		}
		return val;
	}


	/*---------------------------------------------------------------------------------------------	
	enterVals
	
	input	:   	double value from [1-100]
	return	:	int [10]
	
	Prompts user for values.  For each value from [1-100], adds 1 to the appropriate 
	bin in the array.  Ends when user types 0.  Returns the array.
	------------------------------------------------------------------------------------------------*/	
	private static int[] enterVals(double val) 
	{
		int[] f = new int[10];
		while (val > 0) 
		{
			f[(int) ((val - 0.5)/10)]++;
			val = getInput(">");
		}
		return f;
	}
	
	/*---------------------------------------------------------------------------------------------	
	printOutput
	
	input	:   	int [10]
	return	:	none
	
	Prints a histogram of the values typed in by user.
	------------------------------------------------------------------------------------------------*/	
	private static void printOutput(int[] f) 
	{
		for (int i=1; i<=f.length; i++) 
		{
			System.out.print("\n" + ((i==1) ? " " : ""+ (i-1)) + "1-" + i + "0| ");
			for (int j=1; j<=f[i-1]; j++)
				System.out.print("*");
			System.out.flush();
		}
		System.out.println();
		in.waitUntilEnter();
	}
	
	
	/*---------------------------------------------------------------------------------------------	
	bye
	
	input	:   	none
	return	:	none
	
	Prints goodbye message when user elects not to play.
	------------------------------------------------------------------------------------------------*/		
	private static void bye() 
	{
		System.out.println("\nYou didn't enter any values!\nCan't make a histogram out of nothing now, can we?");
		in.waitUntilEnter();
	}
	
	
	/*---------------------------------------------------------------------------------------------	
	intro
	
	input	:   	none
	return	:	none
	
	Message to introduce the game
	------------------------------------------------------------------------------------------------*/	
	private static void intro() 
	{
		System.out.println("Welcome to the histogram program.\nPlease enter in a series of numbers from 1-100.");
		System.out.println("When finished, enter 0 to see your results.\n");
	}
	
}

/*
SAMPLE OUTPUT:

Welcome to the histogram program.
Please enter in a series of numbers from 1-100.
When finished, enter 0 to see your results.

>40
>42
>43
>44
>45
>10
>30
>89
>81
>83
>99
>0

 1-10| *
11-20|
21-30| *
31-40| *
41-50| ****
51-60|
61-70|
71-80|
81-90| ***
91-100| *

Press Enter to continue.

*/