Vous êtes sur la page 1sur 6

Algoritmos y Estructuras de Datos.

Algoritmos de Ordenacin.

GUIA DE LABORATORIO #2 ALGORITMOS DE ORDENACIN Burbuja, Seleccin, Insercin, QuickSort.

OBJETIVO.

Aprender a manipular el uso de los distintos algoritmos de ordenacin que existen para el desarrollo de ejercicios en lenguaje C.

TEMPORIZACION:

Inicio de la practica: Semana 12/09/11 Tiempo de desarrollo de la prctica: 3 Sesiones.

Algoritmos y Estructuras de Datos.

Algoritmos de Ordenacin.

Ejercicios Resueltos. Programa que lee los pesos en Kg de un grupo de estudiantes y los almacena en un arreglo dinmico de elementos de tipo float. Luego ordena los pesos en modo ascendente utilizando el algoritmo de ordenacin de Seleccin. (Solucin con el Visual Studio 2005)
#include "stdio.h" #include "stdlib.h" int Menor(float *p, int TAM, int i) { float menor=p[i]; int pos=i++; for(;i<TAM; i++) { if(p[i]<menor){ pos = i; menor=p[i]; } } return pos; //retorna la posicin } int _tmain(int argc, _TCHAR* argv[]) { float *pesos,temp; int i,j=-1,nest; printf("Cuantos estudiantes son?: "); scanf("%d",&nest); pesos = (float *) malloc(nest *sizeof(float)); if(pesos==NULL) { printf("Insuficiente Espacio de Memoria\n"); exit(-1); //Salir del Programa } for (i = 0; i<nest; i++) { printf("Peso del Estudiante[%d]: ",i+1); scanf("%f",(pesos+i)); } printf("\n****ARRAY ORIGINAL****\n"); for (i = 0; i<nest; i++) printf("Peso[%d]: %.1f\n",i+1,*(pesos+i)); /*Ordenacin del array con el mtodo de seleccin en formato ascendente*/ for (i=0;i<nest;i++){ j = Menor(pesos, nest, i); printf("\npos=%d\n", j); temp=pesos[i]; pesos[i] = pesos[j]; pesos[j] = temp;
2

Algoritmos y Estructuras de Datos. }

Algoritmos de Ordenacin.

printf("\n****ARRAY ORDENADO EN FORMATO ASCENDENTE****\n"); for (i = 0;i<nest;i++) printf("Peso[%d]: %.1f\n",i+1,*(pesos+i)); free(pesos); system("PAUSE"); return 0; }

Programa que lee la informacin bsica de una persona (nombre, apellido, sexo, direccin, telfono e identificador) representada como un registro. Luego, ordena dicha informacin utilizando el algoritmo de la burbuja en modo ascendente.
#include "stdafx.h" #include "stdio.h" #include "stdlib.h" #define N 3 struct persona { int id; char nombre[45]; char apellido[45]; char sexo; char direccion[80]; char telefono[10]; };

Algoritmos y Estructuras de Datos. int _tmain(int argc, _TCHAR* argv[]) { struct persona p[N], temp; int i, j, pos_men; //leer los datos de las personas printf("\n\tDATOS DE LAS PERSONAS\n"); for(i=0; i<N; i++) { printf("\nIdentificador:"); scanf("%d", &p[i].id); printf("Nombre:"); scanf("%s", p[i].nombre); printf("Apellido:"); scanf("%s", p[i].apellido); printf("Sexo(m/f):"); fflush(stdin); p[i].sexo = getchar(); printf("Direccion:"); fflush(stdin); gets(p[i].direccion); printf("Telefono:"); fflush(stdin); scanf("%s", p[i].telefono); }

Algoritmos de Ordenacin.

//ordenar los datos leidos con el metodo de la burbuja for(i=1; i<N; i++) for(j=0; j<N-i; j++) if(p[j].id > p[j+1].id) { temp = p[j]; p[j] = p[j+1]; p[j+1] = temp; } //mostrar los datos ordenados printf("\n\tDATOS DE LAS PERSONAS ORDENADOS\n"); for(i=0; i<N; i++) { printf("\nLa persona %s %s con identificador %d del sexo %c vive en %s y su telefono es %s\n", p[i].nombre,p[i].apellido,p[i].id,p[i].sexo, p[i].direccion,p[i].telefono); } system("PAUSE"); return 0; } Observacin: la grfica no esta completa pues no se ve la lectura del registro 5.
4

Algoritmos y Estructuras de Datos.

Algoritmos de Ordenacin.

Ejercicios Propuestos. 1. Una inmobiliaria tiene informacin disponible sobre apartamentos en alquiler. De cada apartamento se conoce: a) CLAVE: variable entera que identifique al inmueble. b) EXTENSION: variable de tipo real que expresa la superficie del departamento en metros cuadrados. c) UBICACIN: variable de tipo cadena que expresa si la ubicacin del inmueble es excelente, buena, regular o mala. d) PRECIO: variable de tipo real que expresa el precio del inmueble. e) DISPONIBLE: variable de tipo lgico (o entero) que expresa si el inmueble est disponible para la renta o no. Diariamente acuden a la inmobiliaria muchos clientes solicitando informacin de los apartamentos. Escriba un programa en C capaz de leer dicha informacin y luego presente por pantalla un informe con la informacin de los alquileres ordenada ascendentemente por el campo CLAVE. Represente la informacin como un registro (estructura). Utilice el algoritmo del QuickSort para realizar la ordenacin.

Nota: suponga que la inmobiliaria lleva informacin de 10 apartamentos.

Algoritmos y Estructuras de Datos.

Algoritmos de Ordenacin.

2. El departamento del personal de una escuela tiene registros de nombre, sexo y edad de cada uno de los profesores adscrito al mismo. Escriba un programa en C que lea la informacin del personal y calcule la edad promedio del grupo de profesores. Luego presente por pantalla el siguiente listado: Profesoras con edad mayor al promedio de edad ordenado en modo ascendente. Profesores con edad menor al promedio de edad ordenado en modo descendente.

Para ambos casos, se deber preguntar al usuario utilizando un centinela (bandera) si desea visualizar los listados antes mencionados. Utilice el algoritmo de seleccin. Nota: suponga que el personal est constituido por 10 profesores.

3. Escribir un programa interactivo en C que lea el nombre de un pas y su correspondiente capital. Disear el programa de modo que al ejecutarse guarde como mximo 10 pases. Guarde la lista de pases y sus capitales en un arreglo dinmico de estructuras. Utilice como ejemplo la siguiente lista: Canad Per Francia Alemania Nicaragua Uruguay Israel Italia Paraguay Mxico Argentina Ottawa Lima Pars Bonn Managua Montevideo Jerusaln Roma Asuncin Ciudad de Mxico Buenos Aires

Luego, presente por pantalla un informe con la lista de pases ordenados en modo ascendente y descendente utilizando como clave el nombre del pas. Ascendente: utilice el algoritmo de Insercin. Descendente: utilice el algoritmo de la burbuja.

Vous aimerez peut-être aussi