Histograma en Java

Estándar

Tras haber visto varios artículos por Internet, vi algunos interesantes acerca de cómo generar un histograma con asteriscos en Java.

La verdad me decepcioné demasiado al saber que no saben ni siquiera pensar para subir algún contenido. Sólo suben lo que piensan con un título sugestivo para así poder ganar un poco de dinero con las visitas en su blog. Parece que yo, sin ganar dinero, publico contenido de calidad antes que eso, que lo único que nos hace perder a la mayoría de estudiantes es tiempo.

En este artículo muestro el código de un programa que me pidieron en la Universidad, para generar un histograma básico mediante el ingreso y tratamiento de vectores.

Aquí expongo el código:

package vectores; // El paquete que estoy usando

import java.util.Scanner; // Para el ingreso de datos

public class Histograma {
	
	public static void generarV(int[] v) { // Generamos un vector
		for (int i = 0; i < v.length; i++) {
			v[i] = (int) (Math.random() * 101);
		}
	}
	
	public static void histogramaV(int[] v) { // Hace el histograma
		int[] rep = new int[v.length]; // Repeticiones
		for (int i = 0; i < v.length; i++) {
			int ca = 0; // Cantidad (frecuencia)
			for (int j = 0; j < v.length; j++) {
				if (v[i] == v[j]) {
					ca++;
				}
			}
			if (rep[i] == 0) { // Si aún no se ha repetido
				System.out.print(v[i] + ": ");
				for (int k = 0; k < ca; k++) {
					System.out.print("*"); // Un '*' por cada punto frecuencial
				}
				System.out.println();
			}
			for (int j = 0; j < v.length; j++) {
				if (v[i] == v[j]) {
					rep[j]++; // Si ya está visto esta parte
				}
			}
		}
	}
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in); // Creamos el ingreso de datos
		
		System.out.print("Cantidad de elementos: ");
		int n = sc.nextInt(); // Almacenamos cantidad de elementos

		int[] v = new int[n]; // Creamos el vector

		generarV(v); // Lo generamos
		
		histogramaV(v); // Mostramos el histograma
		
	}
	
}

Sé que al código le falta optimizar ciertos aspectos. Aquel que logre esto, puede publicarlo en los comentarios. Así contribuiría con todos los lectores 🙂
Por cierto, puedes descargar el código desde aquí (me brindas unos cuantos céntimos al hacer clic).

Anuncios

¿Y tú qué opinas?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s