Título: Dar una salida en forma de lista en leguaje C Publicado por: ThronerAXE en 15 Marzo 2013, 00:52 am Buenas.
Tengo la duda, o mejor dicho, nose como hacer esto. tengo que hacer un ejercicio en lenguaje C (utilizo el Builder) en donde debo dar una salida en forma de lista, pero los datos que deben salir en esa lista deben cumplir unas condiciones previamente. Tengo que usar arreglos unidimensionales. Queria saber si alguien me podria ilustrar con un ejemplo explicandome brevemente lo que se debe hacer, o si me pueden facilitar una guia donde expliquen este tema (dar una salida en forma de lista) gracias ! Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: pacoperico en 15 Marzo 2013, 01:05 am Dar una salida en forma de lista ¿Te refieres a algo asi?:
Código
La salida en pantalla seria: Código: 1 Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: ThronerAXE en 15 Marzo 2013, 01:48 am algo asi, solamente que el arreglo que tengo que utilizar es una cadena de caracteres
Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: naderST en 15 Marzo 2013, 02:30 am Tal cual, usas strlen para obtener el número de caracteres de la cadena.
Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: ThronerAXE en 15 Marzo 2013, 02:45 am Código
Esto es mas o menos lo que llevo, a partir de la linea 22 es donde no se como escribir el codigo para que me guarde las cadenas de caracter cumpliendo con las condiciones y luego mostrarlas todas en una salida, estuve leyendo un poco de la funcion strlen, pero me dice que lo que me da es la longitud de la cadena de caracteres, entonces no creo que me pueda servir Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: 85 en 15 Marzo 2013, 02:57 am Todas juntas? cuando juntás varias cadenas en 1, eso se le dice 'concatenar cadenas'. Se hace normalmente con STRCAT. No se si es lo que requerís, pero te lo digo solamente..
Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: pacoperico en 15 Marzo 2013, 11:19 am Creo que lo estas buscando es hacer un arreglo de cadenas. Por lo que veo en tu programa quieres imprimir por pantalla todos los clientes que cumplan dos condiciones; que sean buenos, y que tengan una deuda menor de 10.000. Estos clientes los guardas en el arreglo clie_b[MAX].
Cada cliente esta representado por una cadena pero tu arreglo es un arreglo de caracteres no de cadenas. Para ello cambia tu tipo de arreglo clie_b[MAX] a un arreglo de tipo bidimensional o mejor a un arreglo de punteros por ejemplo, en donde si podras almacenar cadenas: Código
Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: ThronerAXE en 17 Marzo 2013, 03:48 am ya me explicaron mas o menos como hacer para mostrar esas listas xd, tambien decidi reestructurar el codigo y hacerlo por partes para no enredarme mucho, este es
Código
tengo un problema tratando de mostrar la salida del cliente malo, resulta que al compilar, y meter el codigo(entero), cuando me da la salida, me da otro numero diferente ¿por que pasa eso? Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: pacoperico en 17 Marzo 2013, 11:20 am En la parte final de tu codigo:
Código
Las dos sentencias que dependen del if deberian ir en un bloque: Código
Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: rir3760 en 17 Marzo 2013, 17:06 pm Ademas de la corrección que ya te indico pacoperico otras dos son:
1) Al pedir confirmación si se debe continuar o no: Código La variable "resp" terminara almacenando el avance de linea generado al introducir el monto de la deuda, para que funcione correctamente debes utilizar " %c": Código 2) Asumes se introducirá el máximo numero de registros: Código Lo que generara resultados incorrecto si el numero de registros es menor, debes cambiar las comparaciones que controlan los bucles a: Código Para así procesar solo los registros introducidos. Un saludo Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: ThronerAXE en 19 Marzo 2013, 02:03 am Muchas gracias por sus consejos y ayudas que me han servido mucho para seguir aprendiendo.
1) Al pedir confirmación si se debe continuar o no: Código La variable "resp" terminara almacenando el avance de linea generado al introducir el monto de la deuda, para que funcione correctamente debes utilizar " %c": Código Tengo una duda con esto, noto que la unica diferencia que hubo en este codigo fue que colocaste un space en el scanf de la variable de resp, pero no termino de entender por que?? Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: rir3760 en 19 Marzo 2013, 04:42 am Por partes:
* La función scanf con casi todos los especificadores como "%d", "%s", etc. lo primero que hace es descartar el espacio blanco, tomando tu programa como ejemplo no hay problema al introducir (cuando se pide la deuda): Código: 12.34{ENTER} Pero con los especificadores "%[]" y "%c" ese descarte no sucede, la función retorna el primer carácter que encuentre en el bufer de la entrada estándar. * Regresando al ejemplo, al pedir la deuda si se introdujo: Código: 12.34{ENTER} * Para evitarlo se utiliza " %c", el espacio en la cadena de formato indica "leer y descartar una secuencia de cero o mas caracteres de espacio blanco". En otras palabras la función primero descarta los caracteres de ese tipo (en tu caso el avance de linea) y solo entonces lee un carácter y lo almacena en la variable resp. * Por ultimo con scanf los caracteres ' ', '\t', '\n' no se toman literalmente (salvo dentro de "%[]"), en su lugar generan el comportamiento ya mencionado. Para explicarlo mejor puedes utilizar " %c", "\t%c", "\n%c" y el efecto sera el mismo. Un saludo Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: ThronerAXE en 22 Marzo 2013, 02:44 am Código Pensando un poco en la estetica, y tambien en otra forma de hacerlo, ¿existe algun codigo para que al momento de que en la pantalla me pregunte "Hay otro cliente...?S/N" y yo ingrese un caracter, ese caracter no se vea en la pantalla, nose si me explique bien xd un ejemplo grafico sería: en la pantalla: Hay otro cliente...?S/N s (estoy ingresando el caracter s y se repite el bucle) Hay otro cliente...?S/N (ingreso el caracter s pero no se ve en la pantalla) Otra duda es, que hay unos codigos que he visto que estan asi: Código mi duda es, que en ningun momento veo q guarden el dato ¿ no se deberia usar el scanf para guardarlo en la variable? Título: Re: Dar una salida en forma de lista en leguaje C Publicado por: rir3760 en 22 Marzo 2013, 04:01 am Pensando un poco en la estetica, y tambien en otra forma de hacerlo, ¿existe algun codigo para que al momento de que en la pantalla me pregunte "Hay otro cliente...?S/N" y yo ingrese un caracter, ese caracter no se vea en la pantalla Es posible pero debes utilizar una biblioteca especifica de tu compilador (por ejemplo conio o ncurses) o el API de tu SO (por ejemplo la Win32 API).Otra duda es, que hay unos codigos que he visto que estan asi: Lo hacen: la función getchar obtiene el carácter, este se pasa a mayúsculas con toupper y finalmente se almacena en la variable "resp".Código mi duda es, que en ningun momento veo q guarden el dato ¿ no se deberia usar el scanf para guardarlo en la variable? Y disculpa lo repetitivo pero no se recomienda el uso de "fflush(stdin)". Un saludo |