Título: Problema con loop Publicado por: jaxoR en 1 Marzo 2014, 20:04 pm Bueno, estaba practicando con C antes de empezar la facultad, y quice hacer un programa en el cual se le pide al usuario que ingrese la cantidad de productos que quiere guardar en el programa y que luego se le pida escribir los nombres de los productos. Todo iba bien hasta la parte del for, en el cual solo puedo ingresar un producto y enseguida finaliza el programa. Nosé que es lo que hago mal:
Código
Título: Re: Problema con loop Publicado por: dmacias en 1 Marzo 2014, 20:23 pm Te hablo desde el mas puro desconocimiento, asi que no me tengas mucho en cuenta, pero quizas sea que j no tiene ningun valor????
Código
Si no es por eso, pues lo siento jajaja, estoy aprendiendo y ando muy muy verde aun. Un saludo Título: Re: Problema con loop Publicado por: rir3760 en 1 Marzo 2014, 22:52 pm Errores importantes hay dos:
* El primero como ya te comentaron esta en el bucle: no le das un valor inicial a la variable "j", la variable "x" sobra, la condición del bucle debe ser "j < i" y tienes un punto y coma demás justo antes del cuerpo del bucle. * El segundo es utilizar un array de chars para almacenar las palabras cuando deberia ser un array de arrays de caracteres. Otro detalle es utilizar un array de longitud variable ya que estos se soportan en C99 y son opcionales en C11. Para el caso puedes reservar memoria con malloc. El programa con las correcciones: Código
Por ultimo hay que evitar el uso de scanf con "%s" ya que tiene los mismos riesgos que gets (mejor utilizar fgets). Un saludo Título: Re: Problema con loop Publicado por: jaxoR en 2 Marzo 2014, 05:22 am Hola rir, ya arregle todo lo del bucle, lo que no te entiendo es lo del Array. Soy nuevo con los arrays, y no entiendo cuando te referís a un array de arrays de carácteres, me darías un ejemplo?
Título: Re: Problema con loop Publicado por: rir3760 en 2 Marzo 2014, 16:59 pm Soy nuevo con los arrays, y no entiendo cuando te referís a un array de arrays de carácteres, me darías un ejemplo? 1) Cuando se manejan valores del mismo tipo en lugar de un montón de variables se utiliza un array, por ejemplo:Código
2) En C una cadena se almacena en un array de caracteres. Por ejemplo: Código
Combinando los puntos anteriores si tu programa debe procesar varias cadenas estas se almacenan en un array de cadenas y como las cadenas se almacenan en arrays de caracteres eso resulta en un array de arrays de caracteres: Código
El uso de sizeof lo veras mas adelante, esta ahí porque lo políticamente correcto es no indicar el numero de elementos de un array si se utiliza (como en el ejemplo) una lista de valores para inicializarlo. Un saludo Título: Re: Problema con loop Publicado por: leosansan en 2 Marzo 2014, 18:01 pm Como comentó tan certeramente rir3760, otra forma es con un array de longitud variable, una vez ingresado el número de palabras: Código
En realidad el formato que ha usado rir3760 para el scanf tan sólo asegura que la entrada es un número. Me explico: * si introduces as canta error. * si introduces 12 todo O.K * Si introduces 12as por error el scanf toma el 12 y de paso se salta otro scanf porque en el llamado buffer o memoria intermedia queda el resto, en este caso la "as" que toma el siguiente scanf de forma automática. De ahí el uso del while para "limpiar" el buffer. Haz la prueba con él activado y desactivado y veras lo que sucede. ¿Qué habría entonces que hacer?. Sencillamente comprobar que la variable "num_pals" se corresponde con un entero y sólo un entero. Pero imagino que ya tendrás tiempo más adelante de ir viendo esos detallitos que parecen chorradas y que pueden arruinar un código que parecía impecable. ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Problema con loop Publicado por: Yoel Alejandro en 2 Marzo 2014, 20:38 pm Más clara imposible la explicación de por qué se llama "array de arrays" de caracteres.
De acuerdo también con el aporte de leosansan de verificar la integridad del dato suministrado por el usuario, y limpiar el búfer de entrada descartando los caracteres encontrados hasta llegar al fin de línea. Creo que no tengo aportes que hacer a este tema ... ya se ha dicho todo, al menos al nivel que requiere quién inició la pregunta. Título: Re: Problema con loop Publicado por: jaxoR en 2 Marzo 2014, 21:30 pm Muchisimas gracias a todos! Ya lo pude hacer andar a mi manera
|