[ Foro de Pascal ]

matriz, intercambiar elementos

03-Apr-2016 21:06
Invitado (mariavera)
8 Respuestas

buenas a todos quiero una orientacion no el programa para el siguiente planteamiento,

Dada una matriz A de enteros de NxM posiciones, donde el valor de M es par, se desea que realice lo siguiente
Por fila, intercambie el valor de la 1era columna con el valor de la M-esima columna, el valor de la 2da columna con el de la M-1 columna, y así sucesivamente, tantas veces como lo indique el valor de la penúltima posición de la fila

gracias , dios los bendiga es para preparar mi examen de matrices


04-Apr-2016 00:17
Nacho Cabanes (+83)

¿Cual es la duda?  Para asegurarte de que tienes claros los fundamentos, piensa por un momento en una versión simplificada del mismo problema: en una matriz 1xM, ¿cómo harías para intercambiar el primer dato y el último?


05-Apr-2016 22:55
Invitado (mariavera)

profesor la verdad es que no entiendo de que va el ejercicio , podias plasmarmelo a traves de un ejemplo es que desde el inicio no entiendo que es lo que se me pide, podrias explicarme en palabras o en un ejemplo numerico que es lo que se pide, gracias profesor


10-Apr-2016 21:51
Nacho Cabanes (+83)

Parece que te pidan, a partir de datos como

9 8 1 5 3 4 2 6

intercambiar el primer dato (9) con el último (6), luego el segundo (8) con el penúltimo (2) y así sucesivamente, tantas veces como se te indique. La cantidad de veces a intercambiar está en el penúltimo valor, luego en este caso serían 2 intercambios y ya habrías terminado.


10-Apr-2016 23:32
Invitado (mariavera)

buenas noches
profesor ok pero y como con un ciclo puedo capturar ese valor del penuntimo valor?

se lo agradezco muchisimo.


11-Apr-2016 19:59
Invitado (mariavera)

buenas noches
profesor ok pero y como con un ciclo puedo capturar ese valor del penuntimo valor?

se lo agradezco muchisimo.


16-Apr-2016 17:09
Nacho Cabanes (+83)

Faltan detalles de como está creada esa matriz, pero en principio, podrías hacer algo como


inicial := 1;
final := cantidad-1;
repeat
    (* ... *)
    inc(inicial);
    dec(final);
until (* ... *)


Es decir, tu primera posición es la 1 y la última que vas a mirar es la "cantidad-1" (o la que proceda). Tras cada pasada incrementas la inicial y disminuyes la final.


28-Apr-2016 20:21
Invitado (mariavera)

ok profesor y cual seria la condicion del until,?


gracias por tu ayuda


30-Apr-2016 17:24
Nacho Cabanes (+83)

Depende de como lo plantees. Para mí, lo más natural es usar un contador que vaya aumentando, y en ese caso deberás comprobar si tu contador coincide ya con la cantidad de veces (que estaba almacenada en el penúltimo dato):


until inicial = limite;


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)