Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Ordenacion por Insercion Binaria
- */
- #include <conio.h>
- #include <stdio.h>
- #include <string.h>
- int BinarySearch (float a[], int low, int high, float key)
- {
- int mid;
- if (low == high)
- {
- return low;
- }
- mid = low + ((high - low) / 2);
- if (key > a[mid])
- {
- return BinarySearch (a, mid + 1, high, key);
- }
- else
- {
- if (key < a[mid])
- {
- return BinarySearch (a, low, mid, key);
- }
- }
- return mid;
- }
- void BinaryInsertionSort (float a[], int n)
- {
- int ins, i, j;
- float tmp;
- for (i = 1; i < n; i++)
- {
- ins = BinarySearch (a, 0, i, a[i]);
- tmp = a[i];
- for (j = i - 1; j >= ins; j--)
- {
- a[j + 1] = a[j];
- }
- a[ins] = tmp;
- }
- }
- int main()
- {
- char getcher, choice, exit = 'n';
- int a, employed, caseone = 0;
- do
- {
- system("cls");
- // clrscr();
- puts("Cuantos empleados hay en su planilla?\n: ");
- scanf("%i", &employed);
- struct emp // creacion del registro
- {
- float id;
- char name[30];
- };
- struct emp employee[employed]; // n empleados
- float id_vector[employed];
- puts("Bienvenido. Elija una opcion: \n\n\t1. Llenar registros\n\n\t2. Desplegar registros\n\n\t3. Ordenar registro por Insercion Binaria\n\n\t4. Salir\n\n");
- choice = getch();
- switch(choice)
- {
- case '1':
- system("cls");
- // clrscr();
- puts("Favor llene los siguientes datos:\n\n");
- for(a = 0; a < employed; a++)
- {
- printf("Nombre del empleado #%i: ", (a + 1));
- gets(employee[a].name);
- }
- puts("\n");
- for(a = 0; a < employed; a++)
- {
- printf("Cedula del empleado #%i: ", (a + 1));
- scanf("%f", &employee[a].id);
- }
- puts("\n\nDatos ingresados. Presione una tecla para regresar al menu.");
- scanf("%c", &getcher); // Igual que una pausa en runtime, pero para que no deje basura (enter) por ahi para los gets del for
- // getch();
- caseone++;
- break;
- case '2':
- if(caseone > 0)
- {
- system("cls");
- // clrscr();
- puts("Los actuales empleados son:\n\n");
- for(a = 0; a < employed; a++)
- {
- printf("Empleado %i: %s, cedula %.0f\n", (a + 1), employee[a].name, employee[a].id);
- }
- puts("\n\nPresione una tecla para regresar al menu");
- scanf("%c", &getcher);
- }
- else
- {
- puts("Primero, llene la lista de empleados por lo menos una vez.");
- scanf("%c", &getcher);
- }
- break;
- case '3':
- for(a = 0; a < employed; a++)
- {
- id_vector[a] = employee[a].id;
- }
- BinaryInsertionSort(id_vector[employed], 5);
- break;
- case '4':
- exit = 's';
- break;
- default:
- puts("\n\nIngrese un valor de los de la lista.");
- scanf("%c", &getcher);
- break;
- }
- }
- while(exit != 's');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement