Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - paulmil

#1
Programación C/C++ / Re: problema en c
22 Diciembre 2012, 18:11 PM
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