hola soy un novato entrando a esto de la programacion C++ ya que me llamo mucho la atencion.
quisiera que me ayudaran con una matriz NxN en el cual introducimos desordenadamente los valores
ejm: 5 8 3 2
20 7 6 10 esta seria la matriz introducida
1 22 4 0
luego quiero ordenarla de forma de culebra o zigzag (depende como sea su nombre en su pais) pero invertida de la siguiente manera.
3 2 1 0 < (numero menor)
> 4 5 6 7
(numero >> 22 20 10 8 <
mayor)
agradeceria ayuda.
Sabes ordenar un arreglo unidimensional?
Sabes como invertir el orden de un arreglo unidimensional?
Si es asi, creo que lo unico que te falta es crear una funcion o 2 funciones que dado un indice en un arreglo unidimensional, lo convierta en 2 indices.
Y entonces, si tienes un algoritmo que diga
swap( i, j )
con i y j indices de un arreglo unidimensional, lo hagas en la matriz 2d.
Una vez ordenado, pasas otra vez por el arreglo 2 dimensional e inviertes los sub arreglos pares (o impares, dependiendo de como cuentes).
aun no lo menejo bien. :-[
Te diría que uses la función qsort para ordenar. Es un poco difícil de usar si eres nuevo en el lenguaje pues usa punteros a void y un puntero a función, pero no es muy complicada si buscas unos cuantos ejemplos y buscas documentación simplificada de ella.
Lo que podrías hacer es crear un puntero (de una dimensión) a la tabla y ordenarla mediante qsort de menor a mayor.
Una vez tienes la tabla ordenada usar de nuevo qsort, pasándole una función de orden inversa, vas ordenando las líneas impares de la tabla; las pares ya estarán ordenadas por el paso anterior.
Cuándo se termine ya tendrás la tabla ordenada según tu criterio.
para ordenar puedes utilizar el método de la burbuja
https://es.wikipedia.org/wiki/Ordenamiento_de_burbuja (https://es.wikipedia.org/wiki/Ordenamiento_de_burbuja)