Muchas gracias chicos, ahora tengo otro problema:
me piden esto:
Practica 19:
Se dispone de dos vectores paralelos con 8 elementos, en primer vector es de tipo numérico entero (contiene códigos de artículos desordenados). Los elementos del segundo vector, son cadenas de caracteres el segundo (contienen títulos libros).
Codificar un programa que realice el siguiente proceso: -Inicializar los vectores en tiempo de compilación. -Mostrar el contenido de los vectores en paralelo. -Ordenar el primer vector, los datos del segundo vector se sincronizaran con la ordenación de códigos del primer vector.
-Mostrar el contenido de los vectores en paralelo. -Realizar búsquedas dicotómicas: introduciendo por teclado un código de libro se mostrara el titulo que le corresponde, en caso de que el código tecleado no exista deberá mostrar un mensaje de aviso.
y tengo esto:
#include <stdio.h>
#include <stdlib.h>
#define MAXEL 8
typedef int Tcodigos[MAXEL];
typedef char Tdesc[MAXEL][30];
Tcodigos codigos = {8016, 2038, 7856, 2730, 4564, 6574, 9809, 3421};
Tdesc desc = {"El Hobbit", "Un mundo feliz", "El dardo en la palabra", "Historia de la Gestapo", "Harry Potter", "Angeles y demonios", "El codigo Da Vinci", "Venganza en Sevilla"};
void ordenar(int xt[MAXEL])
{
int i,sw,g;
do
{
sw=0;
for(i=0;i<MAXEL;i++)
if (xt[i]>xt[i+1])
{
g=xt[i];
xt[i]=xt[i+1];
xt[i+1]=g;
sw=1;
}
} while (sw !=0);
}
int busquedabin (int vector[], int N, int buscado){
int izq = 0;
int der = N-1;
int centro = (izq+der)/2;
while ((izq<=der) && (vector[centro]!=buscado)) {
if (buscado<vector[centro])
der = centro - 1;
else
izq = centro + 1;
centro = (izq+der)/2;
}
if (izq>der)
return -1;
else
return centro;
}
void main(){
int i, num, encontrado = 0;
for(i=0; i<MAXEL; i++){
printf("El libro %s tiene el codigo %i\n", desc[i], codigos[i]);
}
ordenar(codigos);
for(i=0; i<MAXEL; i++){
printf("El libro %s tiene el codigo %i\n", desc[i], codigos[i]);
}
printf("Introduzca el codigo del libro a buscar\n");
scanf("%i", &num);
num = busquedabin(codigos, MAXEL, num);
if (num == -1)
printf("El codigo introducido no existe\n");
else
printf("El codigo introducido corresponde al libro %s", desc[num]);
}
El programa funciona a las mil maravillas, pero lo que no sé como hacer es que el array que contiene los libros, se ordene solo, despues de haber ordenado el de los códigos, no sé si me entendeis...
Mil gracias!