Pregunta: | 67648 - AYUDA CONORDENAMIENTOS MENUS Y FUNCIONES |
Autor: | Laura Vazval |
Hola espero y me ayuden a corregir mi programa, No se por que me marca error con algunas variables, Tambien lo necesito pasar a menus pero no se como... Ayuda , si me podrian decir en que estoy mal..... #include <conio.h> #include <stdio.h> #define N 100 void entradaLista (int a[], int n); void ordIntercambio (int a[], int n); void ordSeleccion (int a[], int n); void ordInsercion (int a[], int n); void ordBurbuja (int a[], int n); void ordenacionShell(int a[], int n); int busquedaBin(int lista[], int n, int clave); int Secuencial ( int x, int lista[], int n ); void imprimirLista (int a[], int n); main() { int a[N], n = 0; printf(" Cuantos elementos deseas leer: "); scanf("%d", & n); entradaLista (a, n); printf(" Los elementos desordenados del vector son: "); imprimirLista (a, n); //ordIntercambio (a, n); //ordSeleccion (a, n); //ordInsercion (a, n); ordBurbuja (a, n); ordenacionShell(a, n); busquedaBin(lista, n, clave); Secuencial (x, lista, n ); printf(" Los elementos con ordenamiento por INTERCAMBIO son: "); imprimirLista (a, n); getch(); } void entradaLista (int a[], int n) { int i; for (i = 0; i < n; i++) { printf(" Dame un elemento para el vector: "); scanf("%d", & a[i]); } return; } void ordIntercambio (int a[], int n) { int i = 0, j = 0, aux = 0; /* se realizan n-1 pasadas */ /* a[o], ... , a[n-2] */ for (i = 0 ; i <= n-2 ; i++) /* coloca mínimo de a[i+1]...a[n-1] en a[i] */ for (j = i+1 ; j <= n-1 ; j++) if (a[i] > a[j]) { aux; aux = a[i]; a[i] = a[j]; a[j]= aux ; } } void ordSeleccion (int a[], int n) { int indiceMenor = 0, i = 0, j = 0, aux = 0; /* ordenar a[0]..a[n-2] y a[n-1] en cada pasada */ for (i = 0; i < (n-1); i++) { /* comienzo de la exploración en índice i */ indiceMenor = i; /* j explora la sublista a[i+1]..a[n-1] */ for (j = i+1; j < n; j++) if (a[j] < a[indiceMenor]) indiceMenor = j; /* sitúa el elemento más pequeño en a[i] */ if (i != indiceMenor) { aux = a[i]; a[i] = a[indiceMenor]; a[indiceMenor] = aux ; } } } void ordInsercion (int a[], int n) { int i, j; int aux; for (i = 1; i < n; i++) { /* índice j explora la sublista a[i-1]..a[0] buscando la posición correcta del elemento destino, lo asigna a a[j] */ j = i; aux = a[i]; /* se localiza el punto de inserción explorando hacia abajo */ while (j > 0 && aux < a[j-1]) { /* desplazar elementos hacia arriba para hacer espacio */ a[j] = a[j-1]; j--; } a[j] = aux; } } void ordBurbuja (int a[], int n) { int interruptor = 1, pasada = 0, j = 0, aux = 0; for (pasada = 0; pasada < n-1 && interruptor; pasada++) { /* bucle externo controla la cantidad de pasadas */ interruptor = 0; for (j = 0; j < n-pasada-1; j++) if (a[j] > a[j+1]) { /* elementos desordenados, es necesario intercambio */ interruptor = 1; aux = a[j]; a[j] = a[j+1]; a[j+1] = aux; } } } void ordenacionShell(int a[], int n) { int intervalo = 0, i = 0, j = 0, k = 0, aux = 0; intervalo = n / 2; while (intervalo > 0) { for (i = intervalo; i < n; i++) { j = i - intervalo; while (j >= 0) { k = j + intervalo; if (a[j] <= a[k]) j = -1; /* así termina el bucle, par ordenado */ else { aux = a[j]; a[j] = a[k]; a[k] = aux; j -= intervalo; } } } intervalo = intervalo / 2; } } /* búsqueda binaria. devuelve el índice del elemento buscado, o bien -1 caso de fallo */ int busquedaBin(int lista[], int n, int clave) { int central, bajo, alto; int valorCentral; bajo = 0; alto = n-1; while (bajo <= alto) { central = (bajo + alto)/2; /* índice de elemento central */ valorCentral = lista[central]; /* valor del índice central */ if (clave == valorCentral) return central; /* encontrado, devuelve posición */ else if (clave < valorCentral) alto = central -1; /* ir a sublista inferior */ else bajo = central + 1; /* ir a sublista superior */ } return -1; /* elemento no encontrado */ } int Secuencial ( int x, int lista[], int n ) { int j=0; for( j=0; j < n; j++ ) if( x = = vect[j] ) return j; return (-1); } void imprimirLista (int a[], int n) { int i; for (i = 0; i < n; i++) printf("%d ", a[i]); return; } |