Buenas, tambien estoy aprendiendo a programar en C y por ende cai al foro ![;D ;D](https://forum.elhacker.net/Smileys/navidad/grin.gif)
Me pareció buena practica hacer el ejercicio aqui planteado, así que lo hice respetando la solucion propuesta pero con punteros. Ademas los valores del arreglo son cualquier entero e ingresados por teclado
Saludos
![;D ;D](https://forum.elhacker.net/Smileys/navidad/grin.gif)
Me pareció buena practica hacer el ejercicio aqui planteado, así que lo hice respetando la solucion propuesta pero con punteros. Ademas los valores del arreglo son cualquier entero e ingresados por teclado
Código (c) [Seleccionar]
#include <stdio.h>
#define MAX 10
int arreglo[MAX], cont = 0;
void imprime_horizontal(int *p);
void imprime_vertical(int *q);
int main(void) {
/** Ingresa valores del arreglo */
for (cont = 0; cont < MAX; cont++) {
printf("arreglo[%d] = ", cont);
scanf("%d", &arreglo[cont]);
fflush(stdin);
}
printf("\n\n");
/** Imprime diagrama horizontal */
imprime_horizontal(arreglo);
printf("\n");
/** Imprime diagrama vertical */
imprime_vertical(arreglo);
printf("\n");
printf("Presione una tecla para continuar...");
getchar();
return 0;
}
/**
* Imprime los valores del arreglo formando un diagrama de barras horizontal
* @param p Puntero del arreglo a imprimir
*/
void imprime_horizontal(int *p){
int x = 0, y = 0;//Ejes del diagrama
for (y = 0; y < MAX; y++) {
for (x = 0; x < *(p + y); x++) {
printf("*");
}
printf("\n");
}
}
/**
* Imprime los valores del arreglo formando un diagrama de barras vertical
* @param q Puntero del arreglo a imprimir
*/
void imprime_vertical(int *q){
int referencia = 0;
int x = 0, y = 0;//Ejes del diagrama
for (cont = 0; cont < MAX ; cont++) {
if ( *(q + cont) > referencia) {
referencia = *(q + cont);
}
}
for (y = 0; y < referencia; y++) {
for (x = 0; x < MAX; x++) {
if ( *(q + x) > y) printf("*");
else printf(" ");
}
printf("\n");
}
}
Saludos