Título: Hola alguien me puede explicar la salida del programa Publicado por: Gatoloco123 en 13 Febrero 2017, 21:13 pm Es que tuve un examen y me salio este problema y pues me salio mal :xD alguien me puede explicar por que sale 9 8 4 5 6 8 7 2 1 0 :-\
Código
· Los códigos deben ir en etiquetas GeSHi >aquí las reglas del foro (http://foro.elhacker.net/reglas.htm) -Engel Lex Título: Re: Hola alguien me puede explicar la salida del programa Publicado por: engel lex en 13 Febrero 2017, 23:47 pm Código un ciclo con i epezando en 0 y terminando en 9, a en cada posición valdrá 9 menos i, es decir cuando i sea 0, a en esa posición valdrá 9, para 9 será 0 Código
un ciclo con i epezando en 2 y terminando en 6, a en cada posición valdrá lo que había en a en la posición i y se le sumará 2, por ejemplo, cuando i sea 2, ssuponiendo que en a en posición 2 contenia 7, se buscará que tenía a en posición 7 y a eso se le sumará 2 Título: Re: Hola alguien me puede explicar la salida del programa Publicado por: dato000 en 14 Febrero 2017, 15:29 pm Ahhhh recuerdo muy bien estas pruebas de escritorio en mis clases de la universidad a principios...je era bastante molesto todo eso.
Hoy en día es mi pan de cada día como dicen por ahí. Voy a intentar dejar el esquema claro: Código
Ahora examinemos el paso a paso: Citar Salida primer for (i = 0; i < 10; i++) Tenemos lo siguiente: a[0] = 9 - 0 = 9 a[1] = 9 - 1 = 8 a[2] = 9 - 2 = 7 a[3] = 9 - 3 = 6 a[4] = 9 - 4 = 5 a[5] = 9 - 5 = 4 a[6] = 9 - 6 = 3 a[7] = 9 - 7 = 2 a[8] = 9 - 8 = 1 a[9] = 9 - 9 = 0 Creo que ahi va todo en orden, facil de entender. Ahora sigue lo interesante, el segundo for Citar Salida primer for (i = 2; i < 7; i++) Tenemos lo siguiente: a[0] = 9 //No cambia a[1] = 8 //No cambia a[2] = ? //cambia a[3] = ? //cambia a[4] = ? //cambia a[5] = ? //cambia a[6] = ? //cambia a[7] = 2 //No cambia a[8] = 1 //No cambia a[9] = 0 //No cambia Para entender el ciclo, es necesario puntualizar que se toma las posiciones del arreglo, que tiene un valor, que a su misma vez, es otra posición de ese mismo arreglo, y que una vez se realiza el cambio, actualiza la posición del arreglo, que luego se utilizara en ese mismo ciclo para los pasos siguientes Por ejemplo: Citar a[2] = a[ a[2] ] + 2 // a[2] = 7 a[2] = a[ 7 ] + 2 // a[7] = 2 a[2] = 2 + 2 a[2] = 4 a[0] = 9 //No cambia a[1] = 8 //No cambia a[2] = 4 //cambia a[3] = ? //cambia a[4] = ? //cambia a[5] = ? //cambia a[6] = ? //cambia a[7] = 2 //No cambia a[8] = 1 //No cambia a[9] = 0 //No cambia Y ahora seguimos con los otros, hasta que i se menor que 7 (i<7) y así se rompe el ciclo: Citar a[3] = a[ a[3] ] + 2 // a[3] = 6 | a[4] = a[ a[4] ] + 2 // a[4] = 5 a[3] = a[ 6 ] + 2 // a[6] = 3 | a[4] = a[ 5 ] + 2 // a[5] = 4 a[3] = 3 + 2 | a[4] = 4 + 2 a[3] = 5 | a[4] = 6 a[0] = 9 //No cambia | a[0] = 9 //No cambia a[1] = 8 //No cambia | a[1] = 8 //No cambia a[2] = 4 //cambia | a[2] = 4 //cambia a[3] = 5 //cambia | a[3] = 5 //cambia a[4] = ? //cambia | a[4] = 6 //cambia a[5] = ? //cambia | a[5] = ? //cambia a[6] = ? //cambia | a[6] = ? //cambia a[7] = 2 //No cambia | a[7] = 2 //No cambia a[8] = 1 //No cambia | a[8] = 1 //No cambia a[9] = 0 //No cambia | a[9] = 0 //No cambia Ahora ves que los elementos de los arreglos van cambiando de valor nuevamente?? hay que usar esos nuevos valores para las nuevas sumatorias: Citar a[5] = a[ a[5] ] + 2 // a[5] = 4 | a[6] = a[ a[6] ] + 2 // a[6] = 3 a[5] = a[ 4 ] + 2 // a[4] = 6 | a[6] = a[ 3 ] + 2 // a[3] = 5 a[5] = 6 + 2 | a[6] = 5 + 2 a[5] = 8 | a[6] = 7 a[0] = 9 //No cambia | a[0] = 9 //No cambia a[1] = 8 //No cambia | a[1] = 8 //No cambia a[2] = 4 //cambia | a[2] = 4 //cambia a[3] = 5 //cambia | a[3] = 5 //cambia a[4] = 6 //cambia | a[4] = 6 //cambia a[5] = 8 //cambia | a[5] = 8 //cambia a[6] = ? //cambia | a[6] = 7 //cambia a[7] = 2 //No cambia | a[7] = 2 //No cambia a[8] = 1 //No cambia | a[8] = 1 //No cambia a[9] = 0 //No cambia | a[9] = 0 //No cambia finalmente tenemos el arreglo: Citar a[0] = 9 a[1] = 8 a[2] = 4 a[3] = 5 a[4] = 6 a[5] = 8 a[6] = 7 a[7] = 2 a[8] = 1 a[9] = 0 Puede que parezca algo largo, extenso y complicado, pero en realidad es facil de entender si se usa un debug apropiado, yo use para este caso el de codeblocks http://wiki.codeblocks.org/index.php/Debugging_with_Code::Blocks Espero que sea de ayuda. |