Advertisement
JuanTorres

Untitled

Feb 17th, 2015
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.15 KB | None | 0 0
  1. #include <iostream>
  2. #include<string>
  3. #include<fstream>
  4. #include<iomanip>
  5.  
  6. using namespace std;
  7.  
  8. #include "Attletas.h"
  9.  
  10. //TamaΓ±o arrelgo
  11. const int size = 50; //SIZE SUFICIENTEMENTE GRANDE PARA ACEPTAR CUALQUIER CANTIDAD DE CORREDORES CON UN LIMITE DE 50 CORREDORES
  12.  
  13. void sorting(Attletas[], int);
  14. int busquedaBinaria(Attletas[], int,string);
  15.  
  16.  
  17. int main()
  18. {
  19.     char N[100];//Arreglo de 100 caracteres obtener nombre corredor
  20.     int iD = 0;//Numero id corredor
  21.     float t = 0;//obtener informacion tiempo del corredor
  22.  
  23.     int cantidadCorredores; //NUEVA VARIABLE PARA QUE USUARIO ENTRE CUALQUIER CANTIDAD DE CORREDORES
  24.  
  25.     //Classe :Attleta objeto.
  26.     Attletas A[size];
  27.  
  28.     cout << "Entre cantidad de corredores: ";
  29.     cin >> cantidadCorredores; //USUARIO LIMITA EL ARREGLO DE CORREDORES
  30.     cout << endl << endl;          
  31.     for (int i = 0; i < cantidadCorredores; i++) //LOOP SE REPITE PARA CADA CORREDOR, SEGUN ESPECIFICADO POR EL USER
  32.     {
  33.         cout << "************" << endl << endl;
  34.  
  35.         cout << "Nombre: ";
  36.         cin.ignore();
  37.         cin.getline(N, 100, '\n');
  38.         A[i].setName(N);
  39.  
  40.         cout << "Tiempo: ";
  41.         cin >> t;
  42.         A[i].settime(t);
  43.  
  44.         cout << "Id :";
  45.         cin >> iD;
  46.         A[i].setid(iD);
  47.  
  48.         cout << endl;
  49.     }
  50.  
  51.  
  52.     sorting(A, cantidadCorredores);
  53.     cout << fixed << showpoint << setprecision(2);
  54.     for (int x = 0; x < cantidadCorredores; x++)
  55.     {
  56.         cout<<"Tiempo "<< (x+1)<<") " << A[x].gettime() << " " << endl;
  57.     }
  58.  
  59.     char Nombre[100];
  60.     cout << "Entre nombre a buscar :"; cin.ignore(); cin.getline(Nombre, 100);
  61.  
  62.  
  63.     int N_E;
  64.  
  65.     N_E=busquedaBinaria(A, cantidadCorredores, Nombre);  
  66.  
  67.     if (N_E == -1)
  68.     {
  69.         cout << "No se encontro nombre!" << endl << endl;
  70.     }
  71.     else{
  72.  
  73.         cout << "Nombre ::" << A[N_E].getnames() << endl;
  74.         cout << "Id ::" << A[N_E].getid() << endl;
  75.         cout << "Tiempo ::" << A[N_E].gettime() << endl << endl;
  76.     }
  77.        
  78.  
  79.     return 0;
  80. }
  81.  
  82. void sorting(Attletas A[], int size)
  83. {
  84.     /*
  85.     "elComparado" es la casilla que va a ser comparada
  86.     con el resto de las casillas(paraComparar)
  87.     el loop externo escoge la casilla que se va a revisar,
  88.     luego el interno va casilla por casilla viendo si es menor que "elComparado"
  89.     */
  90.     int elComparado;
  91.     float tiempoMenorTemp;//TOMO EL TIEMPO DEL PRIMER CORREDOR COMO EL MENOR PARA DESPUES COMPARARLO
  92.     int minLocation; //LOCATION DEL QUE SE ENCONTRO QUE FUE MENOR QUE "elComparado"
  93.  
  94.     for (elComparado = 0; elComparado < size -1; elComparado++)
  95.     {
  96.         tiempoMenorTemp = A[elComparado].gettime();
  97.         minLocation = elComparado;
  98.  
  99.         for (int paraComparar = elComparado + 1; paraComparar < size; paraComparar++)
  100.         {
  101.             if (A[paraComparar].gettime() < tiempoMenorTemp)
  102.             {
  103.                 tiempoMenorTemp = A[paraComparar].gettime();
  104.                 minLocation = paraComparar;
  105.             }
  106.         }
  107.         A[minLocation] = A[elComparado];
  108.         A[elComparado].settime(tiempoMenorTemp);
  109.     }
  110. }
  111.  
  112. int busquedaBinaria(Attletas A[], int S,string N)
  113. {
  114.    
  115.     int primero = 0;
  116.     int ultimo = S - 1;
  117.     int medio;
  118.  
  119.  
  120.     while ( primero <= ultimo)
  121.     {
  122.         medio = (primero + ultimo) / 2;
  123.  
  124.         if (A[medio].getnames() == N)
  125.         {          
  126.  
  127.             return medio;
  128.            
  129.         }
  130.         else if (A[medio].getnames() < N)
  131.         {
  132.  
  133.              primero=medio+1;
  134.         }
  135.         else
  136.         {
  137.             ultimo=medio-1;
  138.         }
  139.     }
  140.  
  141.     return -1;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement