elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con histograma
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con histograma  (Leído 3,046 veces)
Realser86

Desconectado Desconectado

Mensajes: 12


Ver Perfil
ayuda con histograma
« en: 30 Octubre 2017, 22:55 pm »

Buenas Tardes
He estado haciendo un proyecto para mi clase de algoritmos, en el ultimo punto me piden una grafica o histograma de las ventas por dia, estos datos ya lo tengo en un arreglo de 31 datos  logre hacer el código para que me muestre un gráfico de barras con asteriscos de las ventas de cada uno de los 31 dias del mes

   
  
Código
  1. ventas_por_dia();
  2.  
  3. int valor[] = {total_dia1,total_dia2,total_dia3,total_dia4,total_dia5,total_dia6,total_dia7,total_dia8,total_dia9,total_dia10,total_dia11,total_dia12,total_dia13,total_dia14,total_dia15,total_dia16,total_dia17,total_dia18,total_dia19,total_dia20,total_dia21,total_dia22,total_dia23,total_dia24,total_dia25,total_dia26,total_dia27,total_dia28,total_dia29,total_dia30,total_dia31};
  4.   int i;
  5.   int j;
  6.   int max;
  7.  
  8.   max = 0;
  9.   for (i = 0; i < 31; i++)
  10.      if (valor[i] > max)
  11.         max = valor[i];
  12.  
  13.   for (i = max; i > 0; i--){
  14.      for (j = 0; j < 31; j++)
  15.         if (valor[j] >= i)
  16.         {
  17. cout<<" *";
  18.         }
  19.  
  20.         else
  21.            cout<<"  ";
  22.  
  23.  
  24.      putchar('\n');
  25.   }


lo que me gustaria es que ademas de mostrarme las barras de ventas de cada dia me cree una guia del eje vertical y el horizontal, por que solo me muestra los asteriscos

es decir


el codigo me muestra algo asi

*
*    * *
*    * *
*    * * * *
*    * * * *  

y quiero que me lo muestre asi

Código:
n
.
.
.
7
6
5 *
4 *    * *
3 *    * *
2 *    * * * *
1 *    * * * *  
   1 2 3 4 5 6 7 8 9 10 11 12 . . . . .  . .. 31

con las guías del eje horizontal de los 31 días del mes y del eje vertical dependiendo la cantidad de ventas por dia




· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex


« Última modificación: 31 Octubre 2017, 00:22 am por engel lex » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.355


Ver Perfil
Re: ayuda con histograma
« Respuesta #1 en: 31 Octubre 2017, 15:45 pm »

Al hacerlo por consola, exige escribirlo al revés, es decir primero las últimas líneas y al final la primera.

La forma adecuada de hacerlo, como si nada pasara, pero, en vez de escribir en pantalla, "escribes" en un array de strings, al final, realizas un bucle imprimiendo desde la última línea hasta el comienzo y así te quedará como tu quieres.
Esto es la primera línea a meter en tu array sería:
Código:
miArray(0) = "----------  01  02  03  04  05  06 ... 29  30  31"
n = .... //calcular número de asteriscos según valor (probablemente un solo asterisco represente, pongamos por ejemplo 1325 euros)
miArray(1) = "1 *  " concatenar  asteriscos(n)
n = ....  // ídem como más arriba
miArray(2) = "3 *  " concatenar  asteriscos(n)

bucle desde k hasta 0 retrocediendo  //k es el último índice guardado en el array, el cual (el array) podría ser mayor por ejemplo declarado desde 0 a 255.
     imprimir miArray(k)
Fin bucle

Si eres capaz de controlar las cordenadas de la pantalla, entonces podrás 'dibujar' en el orden que te dé la gana, si no, esa es la forma... guarda en un array y al final imprime en orden inverso a como lo guardas.
Pudiera ser que la forma en que lo plantees no exija escribirlo TODO al revés, si no sólo la lógica general y las filas escribirlas en ordenr directo o inverso...


« Última modificación: 31 Octubre 2017, 15:47 pm por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines