import java.util.*; /** * Compter le nombres d'occurences de chaque lettre dans le flux * d'entrée. */ class Occurences { public static void main(String[] args) throws java.io.IOException { final int NLETTRES = 26; int[] occ = new int[NLETTRES]; // compteurs d'occurences int i; // indice de parcours int c; // caractère lu // initialise les compteurs for (i = 0; i < NLETTRES; i++) occ[i] = 0; // on compte les lettres c = System.in.read(); while (c != -1) { if ('a' <= c && c <= 'z') occ[c - 'a']++; else if ('A' <= c && c <= 'Z') occ[c - 'A']++; c = System.in.read(); } // affiche les résultats System.out.println(); System.out.print("{A:" + occ[0]); for (i = 1; i < NLETTRES; i++) { char car = (char)('A' + i); System.out.print(", " + car + ":" + occ[i]); } System.out.println("}"); // affiche les résultats sous forme d'histogramme vertical //-- on recherche d'abord le maximum... int max = 0; for (i = 0; i < NLETTRES; i++) if (occ[i] > max) max = occ[i]; //-- ... puis on affiche, ligne par ligne System.out.println(); for (int l = 0; l < max; l++) { for (i = 0; i < NLETTRES; i++) if (occ[i] + l >= max) System.out.print(" #"); else System.out.print(" "); System.out.println(); } //-- ... et on affiche la base de l'histogramme for (i = 0; i < NLETTRES; i++) System.out.print("--"); System.out.println(); for (i = 0; i < NLETTRES; i++) { char car = (char)('A' + i); System.out.print(" " + car); } System.out.println(); } }