Título: Ayuda!! Publicado por: Xenomorfo77 en 8 Octubre 2013, 15:47 pm Buenas tengo que hacer un programa que le de la vuelta a un array pasandolo como argumento a una funcion. Lo tengo hecho y me sale el resultado bien pero creo k tiene fallos.¿Alguien puede echarle un vistazo? Gracias
Código
Título: Re: Ayuda!! Publicado por: ivancea96 en 8 Octubre 2013, 15:54 pm Cumple su función.
¿Qué fallos crees que tiene? Título: Re: Ayuda!! Publicado por: eferion en 8 Octubre 2013, 16:08 pm Código
Vale que funcione pero, realmente es necesario tener código así?? Te ahorras una o dos líneas de código... realmente merece la pena?? La primera línea todavía... pero la segunda... Tu piensa lo que te puede llegar a costar entender esto cuando vuelvas al código un par de meses después. Título: Re: Ayuda!! Publicado por: Xenomorfo77 en 8 Octubre 2013, 16:16 pm Código
Vale que funcione pero, realmente es necesario tener código así?? Te ahorras una o dos líneas de código... realmente merece la pena?? La primera línea todavía... pero la segunda... Tu piensa lo que te puede llegar a costar entender esto cuando vuelvas al código un par de meses después. ¿Como lo harias tu? Gracias. Cumple su función. ¿Qué fallos crees que tiene? La cosa es que lo he hecho pero nose ni como xD no me ha quedao claro lo que hago en turn() Código
1.- Guardo en temp el valor que haya en la direccion de memoria a la que apunta pointer. 2.- Al valor que haya en pointer le meto lo que haya en la ultima y despues se incrementa la posicion. 3.- Ahora a que posicion del array apunta pointer en esta linea? En la primera ejecucion del for -> ¿0 o 1? Título: Re: Ayuda!! Publicado por: ivancea96 en 8 Octubre 2013, 16:40 pm El metodo es bastante absurdo, pero bueno, funciona -.-'
Si os fijais, en "turn()", *pointer y temp van a ser siempre iguales a 10. Lo qhe haces es ir moviendo el 10 hacia adelante, mientras vas colocando en la posicion 'i', lo que hay en '25-i'. Título: Re: Ayuda!! Publicado por: eferion en 8 Octubre 2013, 17:00 pm ¿Como lo harias tu? Gracias. Simplifica las instrucciones. Al final el código tiene algunas líneas más, pero éstas son más claras. Código
El mayor problema, aparte de dificultar la legibilidad del código, que presenta el concatenar operaciones es que es bastante sencillo meter la pata... Código
Título: Re: Ayuda!! Publicado por: ivancea96 en 8 Octubre 2013, 17:27 pm Código
Título: Re: Ayuda!! Publicado por: rir3760 en 8 Octubre 2013, 18:07 pm tengo que hacer un programa que le de la vuelta a un array pasandolo como argumento a una funcion. Para invertir el array solo necesitas de un auxiliar y dos punteros (uno ya lo tienes, el parámetro de la función):Código
Un saludo Título: Re: Ayuda!! Publicado por: eferion en 8 Octubre 2013, 22:49 pm Eso es erróneo. Así estás sumandole a esa casilla, la otra casilla. Sumando y asignando. ??? Esto: Código
Es equivalente a esto: Código
Y esto a su vez es equivalente a esto: Código
¿ Dónde está el problema entonces ? Yo te lo digo. El problema es escribir ese tipo de líneas, que generan confusión. Y aquí tienes la prueba. Título: Re: Ayuda!! Publicado por: rir3760 en 9 Octubre 2013, 02:44 am Código
... 2.- Al valor que haya en pointer le meto lo que haya en la ultima y despues se incrementa la posicion. El primero es aplicar indirección y solo entonces sumar "POSITIONS-i-1", la sentencia termina procesada de esta forma: Código Cuando debería ser: Código
El otro se debe al uso del operador "++" y las dos instancias del objeto "pointer" en la expresión: Código Es un problema porque los lenguajes C y C++ no definen el orden de evaluación de los operandos de una expresión. Dependiendo del orden en que estos se evalúen y el momento en que se aplique el efecto lateral del operador "++" se pueden obtener diferentes resultados. Lo mejor aquí es seguir la recomendación de eferion evitando expresiones excesivamente complicadas. Un saludo |