Autor
|
Tema: Ordenar siguiendo el mismo orden dos tablas independientes (Leído 1,988 veces)
|
AIR13
Desconectado
Mensajes: 2
|
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
Mensajes: 1.639
|
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): #include <stdio.h> #include <stdlib.h> int main(void) { int num[3] = {3, 1, 2}; int ndx[3] = {0, 1, 2}; /* Indices de los elementos */ char ch[3] = {'a', 'b', 'c'}; int N = 3; int i; int j; /* Ordenacion mediante BubbleSort */ for (i = N - 1; i > 0; i--){ for (j = 0; j < i; j++) if (num[ndx[j]] > num[ndx[j + 1]]){ int aux; aux = ndx[j]; ndx[j] = ndx[j + 1]; ndx[j + 1] = aux; } } for (i = 0; i < N; i++) return EXIT_SUCCESS; }
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
Mensajes: 2
|
Nunca se me habría ocurrido! Muchísimas gracias, de verdad! Me ha servido de mucho, rir3760 Felices fiestas.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
............................................. 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:#include <stdio.h> #include <stdlib.h> int main(void){ int i,j,n=3,auxn,num[3] = {3, 1, 2}; char ch[3] = {'a', 'b', 'c'},aux; /* Ordenacion mediante Burbuja */ for (i=1; i< n; i++){ for (j=0; j< n-i; j++) if (num[j] > num[j+1]){ auxn =num[j]; num[j]=num[j+1]; num[j+1]=auxn; aux = ch[j]; ch[j] = ch[j + 1]; ch[j + 1] = aux; } } for (i = 0; i < n; i++) printf(" %d ", num[i]); putchar('\n'); for (i = 0; i < n; i++) printf(" %c", ch[i]); putchar('\n'); return EXIT_SUCCESS; }
Saluditos!.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
dos conexiones a tablas abiertas al mismo tiempo
« 1 2 »
PHP
|
OssoH
|
12
|
8,477
|
21 Julio 2010, 14:08 pm
por OssoH
|
|
|
Siguiendo con grafos...
Java
|
soser
|
0
|
1,692
|
23 Noviembre 2010, 06:38 am
por soser
|
|
|
Foreign Key con mismo nombre de dos tablas diferentes.
Bases de Datos
|
crksergio
|
3
|
3,389
|
21 Noviembre 2013, 16:48 pm
por basickdagger
|
|
|
Ordenar letras de una palabra en orden alfabetico
Programación C/C++
|
vivinice
|
1
|
10,063
|
20 Junio 2016, 17:16 pm
por AlbertoBSD
|
|
|
ordenar por orden alfabetica archivo txt en C
Programación C/C++
|
luch21
|
0
|
4,422
|
13 Noviembre 2018, 00:16 am
por luch21
|
|