Buenas, tambien estoy aprendiendo a programar en C y por ende cai al foro
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
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