problema en c

Iniciado por winnipu, 18 Diciembre 2012, 00:13 AM

0 Miembros y 1 Visitante están viendo este tema.

winnipu

Gracias tambien a ti naderST

paulmil

Buenas, tambien estoy aprendiendo a programar en C y por ende cai al foro  ;D

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


#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