[ Foro de Pascal ]
Cordial saludo profesor Nacho y compañeros.
queria saber mas o menos como podria ser el seudocodigo del siguiente programa ojala puedan orientarme:
Entregue en un vector un mensaje partiendo por la ultima letra, la primera letra, la penúltima letra, la segunda letra, la antepenúltima letra, la tercera letra....,por ejemplo
a s d f g h j k
Se obtendrá: k a j s h d g f
mil gracias por cualquier ayuda u orientacion que me puedan brindar del mismo.
Hola Óscar. Voy a escribir lo que creo (no está probado y SEGURO que tiene errores).
Se tiene un vector de entrada A, que es el que escribe el usuario.
Se tiene otro de salida B, que es el que se mostrará por pantalla al final.
Ambos miden 1..N (donde N es un máximo que el usuario nunca llenará).
El usuario introduce "k" caracteres, donde "k" siempre es menor o igual que N, es decir, "k : 1..N;".
Se obvia el contador.
Bien, pues con un bucle se puede realizar. Voy a suponer que se conoce "k", que es al fin y al cabo, el número de letras que el usuario ha introducido.
Más o menos quedaría algo como:
************************************
Desde i:= 1 hasta k hacer
Si "i" no es par entonces
B[i]:= A[k-(i div 2)];
En cambio, si "i" es par entonces
B[i]:= A[i div 2]
************************************
Yo lo dejo ahí. No obstante no sé como sería para el caso en el que "k" es impar, es decir, en el que el nº de letras es impar.
Adjunto un par de imágenes en estas direcciones:
http://www.elestadistico.net/Imagenes/vector1.jpg
http://www.elestadistico.net/Imagenes/vector2.jpg
Espero haberte sido de ayuda.
¡Ciao!
(Por cierto, las imágenes no estarán ahí toda la semana. No podía adjuntarlas por su tamaño. Perdón).
PodrÃas usar usar el "downto" del "for"..
osea ir mostrando del ultimo elemento hasta el primero..
For i:=fin downto 1 do
write(palabra[i], ' ');
Pero para usar esto necesitas el tamaño de la palabra.
Espero que sea una buena solución para los que estas buscando.
Saludos.
Jaja, perdón entendà mal el problema, mil disculpas :D
Una posible solucion seria
hacer un ciclo while
While i<= (fin div 2) do
begin
write(palabra[fin]);
write(palabtra[i]);
inc(i);
dec(fin);
end;
FÃjate que solución te tira, porque pensé una solución alternativa a la que publico el compañero Antonio.
Saludos.
Hola antonio, gracias por responderme.
Efectivamente tu solucion es perfecta ya la he probado y funciona ok,ahora bien antonio que se deberia cambiar en el caso que el planteamiento del problema fuera al contrario , es decir:
a s d f g h j k // vector que escribe el usuario
a k s j d h f g
mil gracias por tu ayuda.
Cordial saludo profesor Nacho, Antonio y compañeros.
Antonio respecto a la solucion de la otra forma alterna en la cadena, es decir , me refiero a :
a s d f g h j k // vector que escribe el usuario
a k s j d h f g
ya lo he solucionado , asi que de mi parte doy por cerrado este hilo y agradecer sus orientaciones que me llevaron a encontrar la solucion al mismo .mil gracias por permitirnos crecer tambien con su ayuda.
y en codigo java como quedaria resuelto?
Da algún detalle más. ¿Quieres invertir por completo el array o descolocarlo, como se proponía en la pregunta inicial de este hilo? ¿Es un array de strings, de números, de letras...? ¿Prefijado o introducido por el usuario?
En general, la forma más simple de invertirlo por completo es hacer un "for" que vaya desde el final (Length-1) hasta el principio (0), extrayendo cada elemento y mostrándolo. Pero los detalles dependen de tu problema concreto.
(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.)