Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h> // toupper
- #include <stdlib.h>
- //DEFINICION DE TIPOS
- typedef struct{
- int nro_legajo;
- char apellido[45];
- char nombre[45];
- } alumno;
- // DECLARACION DE FUNCIONES Y PROCEDIMIENTOS
- bool continuar_ingreso(); //Solicita finalizar ingreso de datos
- void imprimir_alumnos(alumno vec[], int dim); //Muestra el vector de alumnos
- void ingresar_alumnos(alumno vec[],int *dim); //Solicita el ingreso de alumnos al sistema
- void ingresar_campos_alumno(alumno vec[], int i);//Solicita el ingreso de datos de un alumno en particular
- void intercambiar_alumnos(alumno *x,alumno *y);//Intercambia dos structuras alumno
- void insercion(alumno vec[], int dim); //Ordenamiento por método inserción
- void burbuja(alumno vec[],int dim);//Ordenamiento por método burbuja
- //CONSTANTES
- const int tope = 100; //dimesión física del vector
- //PROGRAMA PRINCIPAL
- int main(){
- int dim;
- alumno vec[tope];
- ingresar_alumnos(vec,&dim);
- printf("\n\n SIN ORDENAR");
- imprimir_alumnos(vec,dim);
- burbuja(vec,dim);
- printf("\n\n ORDENADOS POR APELLIDO Y NOMBRE");
- imprimir_alumnos(vec,dim);
- return 0;
- }
- //DEFINICION DE FUNCIONES Y PROCEDIMIENTOS
- bool continuar_ingreso(){
- char c;
- printf("\n Presione <F + ENTER > para finalizar el ingreso de datos \n");
- scanf(" %c",&c);
- if(toupper(c)=='F'){
- return false;
- }
- return true;
- }
- void imprimir_alumnos(alumno vec[], int dim){
- int i;
- for(i=0;i<dim;i++){
- printf("\nLegajo: %d", vec[i].nro_legajo);
- printf("\nApellido y Nombre: %s %s ", vec[i].apellido,vec[i].nombre);
- printf("\n\n");
- }
- }
- void ingresar_campos_alumno(alumno vec[], int i){
- printf("ID de Alumno %d",i,"/n/n");
- printf("\nLegalo:");
- scanf("%d",&vec[i].nro_legajo);
- fflush(stdin);
- printf("Apellido:");
- scanf("%s",&vec[i].apellido);
- fflush(stdin);
- printf("Nombre:");
- scanf("%s",&vec[i].nombre);
- fflush(stdin);
- }
- void ingresar_alumnos(alumno vec[],int *dim){
- int i=-1;
- do{
- i++;
- ingresar_campos_alumno(vec, i);
- }while(continuar_ingreso() && i<tope);
- *dim=i+1;
- }
- void intercambiar_alumnos(alumno *x,alumno *y){
- alumno aux;
- aux = *x;
- *x = *y;
- *y = aux;
- }
- void insercion(alumno vec[],int dim){
- alumno temp;
- int i,j;
- for(i=1;i<dim;i++){
- temp = vec[i];
- j = i-1;
- while(j>=0 && (strcmp(temp.apellido,vec[j].apellido)>0)){
- vec[j+1]=vec[j];
- j--;
- }
- vec[j+1] = temp;
- }
- }
- void burbuja(alumno vec[],int dim){
- int i,j;
- alumno aux;
- for(i=0; i<dim; i++){
- for(j=0 ; j<1; j++){
- if (strcmp(vec[j].apellido,vec[j+1].apellido)>0){
- intercambiar_alumnos(&vec[j],&vec[j+1]);
- }else if (strcmp(vec[j].apellido,vec[j+1].apellido)==0){
- if (strcmp(vec[j].nombre,vec[j+1].nombre)>0){
- intercambiar_alumnos(&vec[j],&vec[j+1]);
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment