Advertisement
Guest User

Untitled

a guest
Dec 31st, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement