elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ordenar siguiendo el mismo orden dos tablas independientes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenar siguiendo el mismo orden dos tablas independientes  (Leído 1,976 veces)
AIR13

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ordenar siguiendo el mismo orden dos tablas independientes
« en: 4 Enero 2013, 23:45 pm »


Buenas! Felicidades por la página. Está realmente bien.

Pues el caso es que estoy con un proyecto y me he quedado anclada en una función (o método, según lo llames) cuyo objetivo es ordenar una tabla, tabla1[3][1] de menor a mayor y, luego otra, tabla2[3][1], independientemente de sus valores.

Pongo un ejemplo: si tabla1[3][1]={(3),(1),(2)} y tabla2[3][1]={(a),(b),(c)}, quiero ordenar tabla1[3][1] de menor a mayor así: {(1),(2),(3)} y poner en ese orden tabla2[3][1], de manera que quede: {(b),(c),(a)}, porque b ocupa el lugar de 1, c el de 2 y a el de 3.

Muchas gracias por adelantado :)


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ordenar siguiendo el mismo orden dos tablas independientes
« Respuesta #1 en: 5 Enero 2013, 04:10 am »

Debes utilizar una tercera tabla para almacenar ahí los indices de los elementos una vez ordenados. En base a ella ya puedes imprimir la segunda tabla con el orden de la primera.

Para ejemplificar (el array ndx es la tabla de indices):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int num[3] = {3, 1, 2};
  7.   int ndx[3] = {0, 1, 2}; /* Indices de los elementos */
  8.   char ch[3] = {'a', 'b', 'c'};
  9.   int N = 3;
  10.   int i;
  11.   int j;
  12.  
  13.   /* Ordenacion mediante BubbleSort */
  14.   for (i = N - 1; i > 0; i--){
  15.      for (j = 0; j < i; j++)
  16.         if (num[ndx[j]] > num[ndx[j + 1]]){
  17.            int aux;
  18.  
  19.            aux = ndx[j];
  20.            ndx[j] = ndx[j + 1];
  21.            ndx[j + 1] = aux;
  22.         }
  23.   }
  24.  
  25.   for (i = 0; i < N; i++)
  26.      printf(" %c", ch[ndx[i]]);
  27.   putchar('\n');
  28.  
  29.   return EXIT_SUCCESS;
  30. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
AIR13

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ordenar siguiendo el mismo orden dos tablas independientes
« Respuesta #2 en: 5 Enero 2013, 14:56 pm »


Nunca se me habría ocurrido! Muchísimas gracias, de verdad! Me ha servido de mucho, rir3760 :)

Felices fiestas.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ordenar siguiendo el mismo orden dos tablas independientes
« Respuesta #3 en: 23 Enero 2013, 22:23 pm »

                   .............................................
Pongo un ejemplo: si tabla1[3][1]={(3),(1),(2)} y tabla2[3][1]={(a),(b),(c)}, quiero ordenar tabla1[3][1] de menor a mayor así: {(1),(2),(3)} y poner en ese orden tabla2[3][1], de manera que quede: {(b),(c),(a)}, porque b ocupa el lugar de 1, c el de 2 y a el de 3.

Como tienes que ordenar la tabla numérica, aprovechas y te ordena al mismo tiempo la alfabética:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void){
  5.  int i,j,n=3,auxn,num[3] = {3, 1, 2};
  6.  char ch[3] = {'a', 'b', 'c'},aux;
  7.    /* Ordenacion mediante Burbuja */
  8.    for (i=1; i< n; i++){
  9.      for (j=0; j< n-i; j++)
  10.         if (num[j] > num[j+1]){
  11.  
  12.            auxn =num[j];
  13.            num[j]=num[j+1];
  14.            num[j+1]=auxn;
  15.            aux = ch[j];
  16.            ch[j] = ch[j + 1];
  17.            ch[j + 1] = aux;
  18.        }
  19.   }
  20.  for (i = 0; i < n; i++)
  21.    printf(" %d ", num[i]);
  22.  putchar('\n');
  23.  for (i = 0; i < n; i++)
  24.    printf(" %c", ch[i]);
  25.  putchar('\n');
  26.  return EXIT_SUCCESS;
  27. }
  28.  
Saluditos!.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
dos conexiones a tablas abiertas al mismo tiempo « 1 2 »
PHP
OssoH 12 8,448 Último mensaje 21 Julio 2010, 14:08 pm
por OssoH
Siguiendo con grafos...
Java
soser 0 1,684 Último mensaje 23 Noviembre 2010, 06:38 am
por soser
Foreign Key con mismo nombre de dos tablas diferentes.
Bases de Datos
crksergio 3 3,369 Último mensaje 21 Noviembre 2013, 16:48 pm
por basickdagger
Ordenar letras de una palabra en orden alfabetico
Programación C/C++
vivinice 1 10,044 Último mensaje 20 Junio 2016, 17:16 pm
por AlbertoBSD
ordenar por orden alfabetica archivo txt en C
Programación C/C++
luch21 0 4,407 Último mensaje 13 Noviembre 2018, 00:16 am
por luch21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines