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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


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

Desconectado Desconectado

Mensajes: 91


Ver Perfil
problema en c
« en: 18 Diciembre 2012, 00:13 am »

Vereis estoy intentando hacer este ejercicio:
dado un arreglo de 10 valores metidos en source, nos haga un diagrama de barras que represente esos numeros. Barras en vertical.

Hasta ahora lo unico que he conseguido es que las barras aparezcan horizontalmente pero no se como hacerlo de arriba a abajo. Os pego el codigo que llevo:

Código:
#include <stdio.h>


int main(void) {
int valor[10]={7,3,5,10,8,4,1,6,7,5};
int i,j,asteriscos;
printf("Los valores que se van a representar como barras de asteriscos son:\n");
printf("7,3,5,10,8,4,1,6,7,5\n");

for (i=0;i<10;i++){ //abrimos un for que recorre todos los elementos del array.
asteriscos=valor[i]; //le damos a asteriscos el valor numerico de cada elemento del array.

printf("\n");
for (j=0;j<asteriscos;j++) //abrimos otro for para que convierta el numero del array en asteriscos.
printf("*");//se imprime un asterisco por cada valor de j, desde 0 hasta el valor del array.
}
printf("\n");
printf("\n");
printf("Presione una tecla para continuar...");
getchar();
return 0;
}


« Última modificación: 19 Diciembre 2012, 09:35 am por winnipu » En línea

twins

Desconectado Desconectado

Mensajes: 54


Ver Perfil
Re: problema en c
« Respuesta #1 en: 18 Diciembre 2012, 00:45 am »

Disculpa a que te refieres con imprimir de arriba a abajo? algo asi o no.

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


En línea

winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: problema en c
« Respuesta #2 en: 18 Diciembre 2012, 01:48 am »

correcto, a eso me refiero. Dado el array de numeros, si el primero es 7 deberian salir 7 asteriscos verticales, si el segundo numero es tres, al lado de esos 7 deberian salir 3 asteriscos verticales.

En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: problema en c
« Respuesta #3 en: 18 Diciembre 2012, 01:50 am »

Vas imprimiendo asteriscos si el valor no es cero, de lo contrario imprimes un espacio en blanco hasta que todos los valores sean cero. Por valores me refiero a cada uno de los elementos del arreglo.
En línea

winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: problema en c
« Respuesta #4 en: 18 Diciembre 2012, 02:03 am »

Asi?

Código:
#include <stdio.h>


int main(void) {
int valor[10]={7,3,5,10,8,4,1,6,7,5};
int i,x;
printf("Valores a representar como barras de asteriscos son: 7,3,5,10,8,4,1,6,7,5 \n");
printf("\n");
printf("REPRESENTACION GRAFICA: \n");
printf("\n");
for(x=0;x<10;x++){
for(i=0;i<10;i++){
if((valor[i]-x)>0)
printf("*");
else
printf(" ");
}
printf("\n");
}
printf("\n");
printf("Presione una tecla para continuar...");
getchar();
return 0;
}
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: problema en c
« Respuesta #5 en: 18 Diciembre 2012, 02:14 am »

Solo un detalle, esta condición:
Código
  1. if((valor[i]-x)>0) ...
La puedes reducir a:
Código
  1. if(valor[i] > x) ...

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: problema en c
« Respuesta #6 en: 18 Diciembre 2012, 02:26 am »

Asi?

Código:
#include <stdio.h>


int main(void) {
int valor[10]={7,3,5,10,8,4,1,6,7,5};
int i,x;
printf("Valores a representar como barras de asteriscos son: 7,3,5,10,8,4,1,6,7,5 \n");
printf("\n");
printf("REPRESENTACION GRAFICA: \n");
printf("\n");
for(x=0;x<10;x++){
for(i=0;i<10;i++){
if((valor[i]-x)>0)
printf("*");
else
printf(" ");
}
printf("\n");
}
printf("\n");
printf("Presione una tecla para continuar...");
getchar();
return 0;
}

El problema es que lo estás limitando a que el máximo valor es 10, cosa que puede cambiar, por ejemplo si colocas 20 en el arreglo de valores no te lo va a graficar completo.
En línea

winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: problema en c
« Respuesta #7 en: 18 Diciembre 2012, 11:20 am »

Asi lo he dejado:
Veis algun error?

Código:
#include <stdio.h>


int main(void) {
int valor[10]={7,5,12,15,8,4,18,6,7,5};
int i,x,mayor=0;
for (i=1;i<10;i++){
if (valor[i]>=mayor)
     mayor=valor[i];}
printf("Valores a representar como barras de asteriscos son: 7,5,12,15,8,4,18,6,7,5 \n");
printf("\n");
printf("REPRESENTACION GRAFICA: \n");
printf("\n");
for(x=0;x<mayor;x++){
for(i=0;i<10;i++){
if((valor[i]-x)>0)
printf("*");
else
printf(" ");
}
printf("\n");
}
printf("\n");
printf("Presione una tecla para continuar...");
getchar();
return 0;
}
« Última modificación: 18 Diciembre 2012, 15:31 pm por winnipu » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: problema en c
« Respuesta #8 en: 18 Diciembre 2012, 15:32 pm »

Asi lo he dejado:
Veis algun error?
Se te olvido la asignación a la variable "mayor", debería ser (las llaves estaban de mas):
Código
  1. int i,x,mayor;
  2.  
  3. mayor = valor[0];
  4. for (i = 1; i < 10; i++)
  5.   if (valor[i] > mayor)
  6.      mayor = valor[i];

Dos recomendaciones: no coloques comentarios en cada linea indicando lo que hace el lenguaje y cambia esta expresión de la forma en que ya te indique:
Código
  1. if((valor[i]-x)>0) ...

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: problema en c
« Respuesta #9 en: 18 Diciembre 2012, 15:39 pm »

Gracias rir3760 por un minuto me adelante a lo de los comentarios y a inicializar la variable mayor.
« Última modificación: Hoy a las 15:31 por winnipu »    
rir3760« Respuesta #8 en: Hoy a las 15:32

Jejeje. Tomo nota de la linea que mencionas, y la modifiare.Gracias por tus sabios comentarios y ayuda.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,236 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
Problema Css o problema con el sidebar
Desarrollo Web
gaboomsk8 6 3,534 Último mensaje 27 Diciembre 2011, 21:56 pm
por gaboomsk8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines