ganryu

Untitled

Dec 31st, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h> // toupper
  4. #include <stdlib.h>
  5.  
  6. //DEFINICION DE TIPOS
  7. typedef struct{
  8.     int nro_legajo;
  9.     char apellido[45];
  10.     char nombre[45];
  11. }   alumno;
  12.  
  13. // DECLARACION DE FUNCIONES Y PROCEDIMIENTOS
  14.  
  15. bool continuar_ingreso(); //Solicita finalizar ingreso de datos
  16. void imprimir_alumnos(alumno vec[], int dim); //Muestra el vector de alumnos
  17. void ingresar_alumnos(alumno vec[],int *dim); //Solicita el ingreso de alumnos al sistema
  18. void ingresar_campos_alumno(alumno vec[], int i);//Solicita el ingreso de datos de un alumno en particular
  19.    
  20. void intercambiar_alumnos(alumno *x,alumno *y);//Intercambia dos structuras alumno
  21. void insercion(alumno vec[], int dim); //Ordenamiento por método inserción
  22. void burbuja(alumno vec[],int dim);//Ordenamiento por método burbuja
  23.  
  24. //CONSTANTES
  25. const int tope = 100; //dimesión física del vector
  26.  
  27. //PROGRAMA PRINCIPAL
  28. int main(){
  29.     int dim;
  30.     alumno vec[tope];
  31.  
  32.     ingresar_alumnos(vec,&dim);
  33.     printf("\n\n SIN ORDENAR");                
  34.     imprimir_alumnos(vec,dim);
  35.     burbuja(vec,dim);  
  36.     printf("\n\n ORDENADOS POR APELLIDO Y NOMBRE");    
  37.     imprimir_alumnos(vec,dim);
  38.  
  39.     return 0;
  40. }
  41.  
  42.  
  43. //DEFINICION DE FUNCIONES Y PROCEDIMIENTOS
  44.  
  45. bool continuar_ingreso(){
  46.     char c;
  47.     printf("\n Presione <F + ENTER > para finalizar el ingreso de datos \n");
  48.     scanf(" %c",&c);  
  49.     if(toupper(c)=='F'){
  50.         return false;
  51.     }
  52.     return true;
  53. }
  54.  
  55. void imprimir_alumnos(alumno vec[], int dim){
  56.     int i;
  57.     for(i=0;i<dim;i++){
  58.         printf("\nLegajo: %d", vec[i].nro_legajo);
  59.         printf("\nApellido y Nombre: %s %s ", vec[i].apellido,vec[i].nombre);
  60.         printf("\n\n");
  61.     }
  62. }
  63.  
  64. void ingresar_campos_alumno(alumno vec[], int i){
  65.     printf("ID de Alumno %d",i,"/n/n");
  66.    
  67.     printf("\nLegalo:");
  68.     scanf("%d",&vec[i].nro_legajo);
  69.     fflush(stdin);
  70.  
  71.     printf("Apellido:");
  72.     scanf("%s",&vec[i].apellido);
  73.     fflush(stdin);
  74.    
  75.     printf("Nombre:");
  76.     scanf("%s",&vec[i].nombre);
  77.     fflush(stdin);
  78. }
  79.  
  80.  
  81. void ingresar_alumnos(alumno vec[],int *dim){
  82.     int i=-1;
  83.     do{
  84.         i++;
  85.         ingresar_campos_alumno(vec, i);
  86.     }while(continuar_ingreso() && i<tope);
  87.     *dim=i+1;
  88. }
  89.  
  90. void intercambiar_alumnos(alumno *x,alumno *y){
  91.     alumno aux;
  92.     aux = *x;
  93.     *x = *y;
  94.     *y = aux;
  95. }
  96.  
  97. void insercion(alumno vec[],int dim){
  98.     alumno temp;
  99.     int i,j;
  100.  
  101.     for(i=1;i<dim;i++){
  102.         temp = vec[i];
  103.         j = i-1;
  104.         while(j>=0 && (strcmp(temp.apellido,vec[j].apellido)>0)){
  105.             vec[j+1]=vec[j];
  106.             j--;
  107.         }
  108.         vec[j+1] = temp;
  109.     }    
  110. }
  111.  
  112. void burbuja(alumno vec[],int dim){
  113.     int i,j;
  114.     alumno aux;
  115.      for(i=0; i<dim; i++){
  116.          for(j=0 ; j<1; j++){
  117.             if (strcmp(vec[j].apellido,vec[j+1].apellido)>0){
  118.                 intercambiar_alumnos(&vec[j],&vec[j+1]);      
  119.             }else if (strcmp(vec[j].apellido,vec[j+1].apellido)==0){
  120.                         if (strcmp(vec[j].nombre,vec[j+1].nombre)>0){
  121.                             intercambiar_alumnos(&vec[j],&vec[j+1]);      
  122.                         }
  123.             }
  124.          }
  125.     }
  126. }
Add Comment
Please, Sign In to add comment