Advertisement
ferseg

ordenacion con registros

Oct 1st, 2014
12,518
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.08 KB | None | 0 0
  1. /*  Autores: Joel Cesar Fernandez Segura
  2.              Edinson Saldaña Ramos
  3.     Fecha: 12/09/2014
  4.     Tema: Ordenamiento de Registros
  5. */
  6.  
  7. #include<iostream>
  8. #include<cstdlib>
  9. #include<string.h>
  10. #define max 100
  11. #define max_char 50
  12.  
  13. using namespace std;
  14.  
  15. struct persona{
  16.     int codigo;
  17.     char nombres[max_char] ;
  18.     char apellidos[max_char];
  19. };
  20.  
  21. struct persona alumno[max], aux;
  22.  
  23. void menu();
  24.  
  25. void registrar_alumnos(int);
  26.  
  27. void mostrar_alumnos(int);
  28.  
  29. void mostrar_alumnos_apellido(int);
  30.  
  31. void mostrar_alumnos_codigo(int);
  32.  
  33. void ordenacion_burbuja_nombre(int);
  34.  
  35. void ordenacion_burbuja_apellido(int);
  36.  
  37. void ordenacion_burbuja(int);
  38.  
  39. /*--------------- Funcion Principal --------------------------*/
  40. int main(void){
  41.     system("color 0a");
  42.     int opcion;
  43.     int nro=0;
  44.     do{
  45.         menu();
  46.         cin>>opcion;
  47.  
  48.         switch(opcion){
  49.             case 1: cout<<"\n\nCANTIDAD DE ALUMNOS A REGISTRAR:";
  50.                     cin>>nro;
  51.                     registrar_alumnos(nro);
  52.                     break;
  53.             case 2: mostrar_alumnos(nro);
  54.                     break;
  55.             case 3: ordenacion_burbuja_nombre(nro);
  56.                     mostrar_alumnos(nro);
  57.                     break;
  58.             case 4: ordenacion_burbuja_apellido(nro);
  59.                     mostrar_alumnos_apellido(nro);
  60.                     break;
  61.             case 5: ordenacion_burbuja(nro);
  62.                     mostrar_alumnos_codigo(nro);
  63.                     break;
  64.  
  65.             case 6: return 0;
  66.  
  67.  
  68.             default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break;
  69.  
  70.         }
  71.         system("pause");  system("cls");
  72.     }while(opcion!=6);
  73. }
  74.  
  75. /*--------------- Muestra el Menu  --------------------------*/
  76. void menu(void){
  77.     cout<<"\n\t\t[    REGISTRO DE ALUMNOS    ]\n";
  78.     cout<<"\t\t----------------------------\n\n";
  79.     cout<<" 1. REGISTRAR ALUMNOS                           "<<endl;
  80.     cout<<" 2. MOSTRAR ALUMNOS                             "<<endl;
  81.     cout<<" 3. MOSTRAR ALUMNOS POR NOMBRE                  "<<endl;
  82.     cout<<" 4. MOSTRAR ALUMNOS POR APELLIDO                "<<endl;
  83.     cout<<" 5. MOSTRAR ALUMNOS POR CODIGO                  "<<endl;
  84.     cout<<" 6. SALIR                                       "<<endl;
  85.  
  86.     cout<<"\n Ingrese opcion : ";
  87. }
  88.  
  89. /*----------------------- Funcion para Registrar Alumnos --------------------------*/
  90. void registrar_alumnos(int nro){
  91.     system("cls");
  92.     for(int i=0; i<nro;i++){
  93.  
  94.         cout<<"\n\n\t\t[  REGISTRO  ]\n";
  95.         cout<<"\t\t------------";
  96.         cout<<"\n\tDATOS DEL ALUMNO #"<<i+1;
  97.         cout<<"\n\n\tCODIGO:"; cin>>alumno[i].codigo;
  98.         cin.ignore(); cout<<"\n\tNOMBRES:"; cin.getline(alumno[i].nombres,max_char);
  99.         cin.ignore(); cout<<"\tAPELLIDOS:"; cin.getline(alumno[i].apellidos,max_char);
  100.  
  101.         system("cls");
  102.     }
  103.  
  104.     cout<<"\n\n\t REGISTRO COMPLETO...\n\n";
  105. }
  106.  
  107. /*-------------------- Funcion que muestra a todos los alumnos registrados ------------------*/
  108. void mostrar_alumnos(int nro){
  109.  
  110.     if(nro==0){
  111.         cout<<"\n\nNO HAY ALUMNOS REGISTRADOS...\n";
  112.     }else { system("cls");
  113.             cout<<"\n\t|ORDEN|      NOMBRES      |      APELLIDOS        |     CODIGO   |"<<endl;
  114.             cout<<"\n\t------------------------------------------------------------------\n";
  115.             for(int i=0;i<nro;i++){
  116.                 cout<<"\t  "<<i<<"            "<<alumno[i].nombres<<"          "<<alumno[i].apellidos<<"              "<<alumno[i].codigo<<endl;
  117.                 cout<<"\n\t------------------------------------------------------------------\n";
  118.             }
  119.             cout<<endl<<endl;
  120.     }
  121. }
  122.  
  123.  
  124. /*-------------------- Funcion que muestra a todos los alumnos para la ordenacion por apellido ------------------*/
  125. void mostrar_alumnos_apellido(int nro){
  126.  
  127.     if(nro==0){
  128.         cout<<"\n\nNO HAY ALUMNOS REGISTRADOS...\n";
  129.     }else { system("cls");
  130.             cout<<"\n\t|ORDEN|      APELLIDOS      |      NOMBRES        |     CODIGO   |"<<endl;
  131.             cout<<"\n\t------------------------------------------------------------------\n";
  132.             for(int i=0;i<nro;i++){
  133.                 cout<<"\t  "<<i<<"            "<<alumno[i].apellidos<<"             "<<alumno[i].nombres<<"            "<<alumno[i].codigo<<endl;
  134.                 cout<<"\n\t------------------------------------------------------------------\n";
  135.             }
  136.             cout<<endl<<endl;
  137.     }
  138. }
  139.  
  140. /*-------------------- Funcion que muestra a todos los alumnos para la ordenacion por codigo ------------------*/
  141. void mostrar_alumnos_codigo(int nro){
  142.  
  143.     if(nro==0){
  144.         cout<<"\n\nNO HAY ALUMNOS REGISTRADOS...\n";
  145.     }else { system("cls");
  146.             cout<<"\n\t|ORDEN|     CODIGO       |       NOMBRES      |      APELLIDOS        |"<<endl;
  147.             cout<<"\n\t-----------------------------------------------__-------------------\n";
  148.             for(int i=0;i<nro;i++){
  149.                 cout<<"\t  "<<i<<"              "<<alumno[i].codigo<<"            "<<alumno[i].nombres<<"          "<<alumno[i].apellidos<<endl;
  150.                 cout<<"\n\t------------------------------------------------------------------\n";
  151.             }
  152.             cout<<endl<<endl;
  153.     }
  154. }
  155. /*-----------------Ordenacion de Burbuja para los nombres  --------------------------*/
  156. void ordenacion_burbuja_nombre(int n){
  157.     int i,j, bandera;
  158.  
  159.     int temp;
  160.     for(i=1; i<n; i++)
  161.     {bandera=0;         //inciamos la bandera en 0
  162.      for(j=n-1; j>=i; j--){
  163.             temp=strcmp(alumno[j-1].nombres,alumno[j].nombres);
  164.             if(temp>0){
  165.                 aux=alumno[j];
  166.                 alumno[j]=alumno[j-1];
  167.                 alumno[j-1]=aux;
  168.                 bandera=1; //si hubo cambio cambiamos la bandera a 1
  169.          }
  170.          }
  171.          if (bandera==0)
  172.         break; //si no hubo cambios entonces salir del for
  173.     }
  174. }
  175.  
  176. /*-------------------Ordenacion de burbuja para los apellidos  --------------------------*/
  177. void ordenacion_burbuja_apellido(int n){
  178.     int i,j, bandera;
  179.  
  180.     int temp;
  181.     for(i=1; i<n; i++)
  182.     {bandera=0;         //inciamos la bandera en 0
  183.      for(j=n-1; j>=i; j--){
  184.             temp=strcmp(alumno[j-1].apellidos,alumno[j].apellidos);
  185.             if(temp>0){
  186.                 aux=alumno[j];
  187.                 alumno[j]=alumno[j-1];
  188.                 alumno[j-1]=aux;
  189.                 bandera=1; //si hubo cambio cambiamos la bandera a 1
  190.          }
  191.          }
  192.          if (bandera==0)
  193.         break; //si no hubo cambios entonces salir del for
  194.     }
  195. }
  196.  
  197. /*------------------------ ordenacion de burbuja para los codigos --------------------------*/
  198. void ordenacion_burbuja(int n){
  199.     int i,j, bandera;
  200.     for(i=1; i<n; i++)
  201.     {bandera=0;         //inciamos la bandera en 0
  202.      for(j=n-1; j>=i; j--){
  203.         if(alumno[j-1].codigo>alumno[j].codigo){
  204.                 aux=alumno[j];
  205.                 alumno[j]=alumno[j-1];
  206.                 alumno[j-1]=aux;
  207.                 bandera=1; //si hubo cambio cambiamos la bandera a 1
  208.          }
  209.          }
  210.          if (bandera==0)
  211.         break; //si no hubo cambios entonces salir del for
  212.     }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement