Sunteți pe pagina 1din 14

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

ENSAYO I BIMESTRE 21) Dada una lista de 6 elementos: 80, 70, 20, 10, 40, 90; al utilizar el algoritmo de la burbuja, indique el orden en que se van posicionando los elementos al realizar la primera y segunda pasada. Posicin de los elementos en el arreglo 80, 70, 20, 10, 40, 90 70, 80, 20, 10, 40, 90 70, 20, 80, 10, 40, 90 70, 20, 10, 80, 40, 90 70, 20, 10, 40, 80, 90 Orden 1 2 3 4 5 Pasada 0 Intercambio 80 y 70 Intercambio 80 y 20 Intercambio 80 y 10 Intercambio 80 y 40 80 y 90 estn ordenados

a) b) c) d) e)

70, 20, 10, 40, 80, 90 f) 20, 70, 10, 40, 80, 90 g) 20, 10, 70, 40, 80, 90 h) 20, 10, 40, 70, 80, 90

5 6 7 8

Pasada 1 Intercambio 70 y 20 Intercambio 70 y 10 Intercambio 70 y 40 70 y 80 ordenados

Programa: #include <stdio.h> #include <conio.h> intarreglo[]={80,70,20,10,40,90}; intinterruptor = 1; intpasada,j,n,aux; intmain() { n=6; for (pasada=0; pasada<n-1 && interruptor; pasada++) { interruptor=0; for(j=0;j<n-pasada-1;j++){ if(arreglo[j]>arreglo[j+1]) { interruptor = 1;

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

aux = arreglo[j]; arreglo[j] = arreglo[j+1]; arreglo[j+1]=aux; } } } printf("\nLos elementos del arreglo son: 80,70,20,10,40,90 "); printf("\n\n Los elementos ordenados del arreglo son: \n"); for(j=0;j<n;j++) { printf("El elemento[%d]:%d\n",j,arreglo[j]); } getch(); } 22) Utilizando el algoritmo de ordenacin por insercin. Codifique y desarrolle un programa que permita ingresar la siguiente lista { 10, 60, 20,90,30,50 }, adems que permita presentar la cantidad de desplazamientos que cada termino que debe realizar luego que esta insertado en el arreglo. Frente a cada nmero insertado indique la cantidad de desplazamientos

Lista de elementos a) b) c) d) e) f) 10 60 20 90 30 50

Cantidad de desplazamientos 0 3 0 2 0 0

Programa: #include<stdio.h> #include <conio.h>

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

int arreglo[] = {10,60,20,90,30,50}; int i, j, n, k, aux; main() { n = 6; k = 0; for(i=1; i<n; i++) { j = i; aux = arreglo[i]; while(j>0 &&aux<arreglo[j-1]) { arreglo[j] = arreglo[j-1]; j=j-1; if (arreglo[j] != arreglo[i]);{ k=k+1; } } arreglo[j] = aux; } printf("\n\nLos elementos ordenados del arreglo son: \n"); for(i=0; i<n; i++) { printf("Elemento [%d]: %d , Desplazamiento= %d\n", i, arreglo[i],k); } }

23)

Resuelva el siguiente problema: Una empresa desea registrar los ingresos y egresos ocasionados por su labor comercial en su primer semestre para realizar los informes respectivos. Los datos que ha generado la empresa son:

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

Mes E F M A Y J

Ingreso 15.000 25.000 12.000 19.000 35.000 16.000

Egreso 10.000 15.000 11.000 21.000 12.000 13.000

Los nombres de los primeros seis meses se los identificar con las letras que se indican en la tabla. Se desea realizar lo siguiente. Almacenar los datos utilizando: un arreglo de caracteres para el mes y dos arreglos decimales para los ingresos y egresos. Para el ingreso de datos hacerlo de la forma que usted crea la ms adecuada. Presente el mes con mayor saldo Presente el mes con menor saldo Presentar de forma ordenada los saldos desde el mayor a menor con sus respectivos meses.

Programa: #include <stdio.h> #include <conio.h> #include <string.h> #define max 6 main() { doubletabla[6][2]={{15,10}, {25,15}, {12,11}, {19,21}, {35,12}, {16,13}};

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

charmes []= {'E','F','M','A','Y','J'};

intsaldo[6]; inti,j,l; int Max=6; int mayor =0; intmenor =0; int aux1 ; /*visuaizar las tabla*/ printf ("informe del primer semestre de la empresa\n\n\n ingresos \t egresos \n"); {

int f, c; for (f=0; f<6; f++) { for (c=0; c<2; c++) printf (" %d \t ", tabla[f][c]); printf ("\n"); } } printf ("\n"); { printf(" MES\t SALDO \n"); printf ("\n"); for (i=0; i<6; i++) { saldo[i] = tabla[i][0] - tabla[i][1]; printf ("mes %c ",mes[i] ); printf (" saldo %d ",saldo[i] ); printf ("\n"); } } printf("\n"); { inti, j,aux;

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

for (i=0; i<Max-1; i++) for (j=(i+1); j<Max ; j++) if(saldo[i]<saldo[j]) { aux= saldo[i]; saldo[i]= saldo[j]; saldo[j]= aux; aux1=mes[i]; mes[i]=mes[j]; mes[j]=aux1; } for(i=0; i<1; i++) printf ("Mes con mayor saldo : %c %d",mes[0],saldo [0]); printf("\n"); printf ("Mes con menor saldo : %c %d \n\n",mes[5],saldo [5]);

} printf("lista de saldos ordenados de mayor a menor \n\n");

for(i=0; i<6; i++) printf("saldo del mes %c %d \n",mes[i],saldo[i]); printf("\n");

getch();

return 0; } Luego conteste lo siguiente: a) Qu tipo de estructura es la mas apropiada para representar los datos de la tabla? i) 3 Arreglos unidimensionales ii) 1 Arreglo bidimensionales

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

iii)

3 Arreglos unidimensionales y 1 bidimensional Respuesta:3 Arreglos unidimensionales y 1 bidimensional

b)

Cul es el mes con mayor saldo? i) A ii) C iii) Y Respuesta: Y Cul es la salida si se desea presentar los meses debidamente ordenados de acuerdo al saldo de cada mes (de forma descendente de mayor a menor) i) ii) iii) E,F,M,A,Y,J Y,F,E,J,M,A Y,F,E,J,A,M Respuesta: Y,F,E,J,A,M

c)

24) Resuelva el siguiente problema: Una pequea aerolnea solicita se realice un programa para asignar asientos en cada vuelo del nico avin de la aerolnea (capacidad de 10 personas). El programa deber mostrar las siguientes alternativas: Por favor escriba: 1 para Primera Clase y 2 para Econmica. Si el usuario escribe 1, el programa debe asignar un asiento en la seccin de primera clase (asientos de 1 a 5). Si el usuario escribe 2, el programa debe asignarle un asiento en la seccin econmica (asientos del 6 al 10). El programa deber presentar el pase de abordo indicando el nmero de asientos asignado a la persona. El programa nunca asignar un asiento que ya haya sido asignado. Cuando este llena la seccin econmica. El programa deber preguntar a la persona si acepta ser colocada en la seccin de primera clase (y viceversa). Si la persona acepta. Haga la asignacin del asiento apropiada. Si no acepta presente el mensaje El prximo vuelo sale en tres horas.A cada persona identifquela con una letra. Presente la lista de pasajeros en orden alfabtico, conjuntamente con su nmero de asiento y si se encuentra en primera clase o econmica. Programa: #include <cstdlib>

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

#include <iostream> #include <stdio.h> #include <conio.h> int MAX=10;

int main(){

charClientes [MAX],cliente,confirmacion;

inteconomica,p_clase,opcion,i; floatingreso,egreso; charmes; economica=5; p_clase=0;

for(i=0;i<10;i++){ Clientes[i]='?'; }

do{

printf ("\n ************************************* \n "); printf ("Presione 1 para Primera Clase: \n "); printf ("Presione 2 para Clase Economica: \n "); printf ("Presione 3 para Presentar datos: \n "); printf ("Presione 4 para Salir: \n "); printf (" \n ************************************* \n "); scanf("%d",&opcion); if (opcion==1) { // system("cls"); printf ("INGRESE INICIAL DE CLIENTE: \n "); scanf("%s",&cliente);

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

if (p_clase!=5) { Clientes[p_clase]=cliente; // system("cls"); printf ("Cliente %c ",cliente); printf (" Asignado en la posicion %d ----------> PRIMERA CLASE\n",p_clase+1); p_clase=p_clase+1; printf ("Cupos Disponibles %d\n",5-p_clase); } else { // system("cls"); printf ("PRIMERA CLASE AGOTADA \n "); printf ("DESEA ASIGNAR EN CLASE ECONOMICA [S/N] \n "); scanf("%s",&confirmacion); if ( confirmacion=='S'){ if (economica!=9){ Clientes[economica]=cliente; // system("cls"); printf ("Cliente %c ",cliente); printf (" Asignado en la posicion %d ----------> CLASE ECONOMICA\n",economica+1); economica=economica+1; printf ("Cupos Disponibles %d\n",10-economica); } } else{ // system("cls"); printf (" PROXIMO VUELO EN 3 HORAS\n"); } } }

if (opcion==2) { // system("cls"); printf ("INGRESE INICIAL DE CLIENTE: \n "); scanf("%s",&cliente);

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

if (economica!=10){ Clientes[economica]=cliente; // system("cls"); printf ("Cliente %c ",cliente); printf (" Asignado en la posicion %d ----------> CLASE ECONOMICA\n",economica+1); economica=economica+1; printf ("Cupos Disponibles %d\n",10-economica); } else { system("cls"); printf ("CLASE ECONOMICA AGOTADA \n "); printf ("EL CLIENTE %c NO SE PUEDO AGRAGAR \n",cliente); printf ("DESEA ASIGNAR EN PRIMERA CLASE [S/N] \n "); scanf("%s",&confirmacion); if ( confirmacion=='S'){ if (p_clase!=5){ printf ("CONFIRME INGRESANDO EL CLIENTE CLIENTE: \n "); scanf("%s",&cliente); Clientes[p_clase]=cliente; // system("cls"); printf ("Cliente %c ",cliente); printf (" Asignado en la posicion %d ----------> PRIMERA CLASE\n",p_clase+1); p_clase=p_clase+1; printf ("Cupos Disponibles %d\n",5-p_clase); } } else{ // system("cls"); printf (" PROXIMO VUELO EN 3 HORAS\n"); } } }

if (opcion==3){ // system("cls");

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

printf("\n DATOS INGRESADOS \n\n"); printf("PRIMERA CLASE POSICION ------------ CLASE ECONOMICA POSICION \n\n"); for(i=0;i<5;i++){ printf("%c --------------- %d %c --------------%d\n",Clientes[i],i+1,Clientes[i+5],i+6);

} printf("\n PRESIONE UNA TECLA PARA CONTINUAR....... \n\n"); getch(); // system("cls"); } }while(opcion!=4 ); getch(); } Conteste: a) Cuntos arreglos son necesarios? i) Solo un arreglo unidimensional ii) 2 Arreglos de 2 dimensiones de tipo Char iii)3 Arreglos Respuesta: 3 Arreglos b) Dada las siguientes personas {M, G, E, T, S, C} que operacin se realiza si se desea presentar de forma ordenada. i) Bsqueda ii) Ordenamiento iii) Ingreso

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

Respuesta: Ordenamiento 25) Realice un programa que permita crear una lista enlazada con los siguientes datos {10, 4, 8, 2, 9, 7, 23, 11, 17, 14}. Luego conteste lo siguiente: a) Indique la instruccin para pasar de un nodo a otro: siguiente = siguiente => enlace b) Indique la instruccin para crear el espacio en memoria: malloc(sizeof(siguiente) c) Cuantos punteros necesita para enlazar los nodos: 9 Programa: #include <stdio.h> #include <malloc.h> #include <conio.h>

structnodo { int val; struct nodo *siquiente; };

struct nodo *primero, *ultimo;

voidanadir_elemento() { struct nodo *nuevo; nuevo = (struct nodo *) malloc (sizeof(struct nodo)); if (nuevo == NULL) printf("No hay memoria Disponible!\n");

printf("\n Nuevo elemento \n"); printf("Ingrese un valor: ");

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

scanf("%d", &nuevo->val); nuevo->siquiente = NULL;

if(primero == NULL){ printf("Primer elemento\n"); primero = nuevo; ultimo = nuevo; } else { ultimo->siquiente = nuevo; ultimo = nuevo; } }

voidmostrar_lista() { struct nodo *auxiliar; /* lo usamos para recorrer la lista */ int i;

i=0; auxiliar = primero; printf("\nMostrando la lista completa:\n"); while (auxiliar!=NULL) { printf("%d ", &auxiliar->val); auxiliar = auxiliar->siquiente; i++; } if (i==0) printf( "\nLa lista est vaca!!\n" ); }

voidmostrar_menu() { printf("\n\nMenu:\n=====\n\n"); printf("1.- Aadir elementos\n"); printf("2.- Mostrar la lista\n"); printf("3.- Salir\n\n");

ADRIANA DANIELA CALDERN ESCUELA DE CIENCIAS DE LA COMPUTACIN

ESTRUCTURA DE DATOS I BIMESTRE

printf("Escoge una opcion: "); fflush(stdout); }

int main() { charopcion;

primero = (struct nodo *) NULL; ultimo = (struct nodo *) NULL; do { mostrar_menu(); opcion = getch(); switch ( opcion ) { case '1': anadir_elemento(); break; case '2': mostrar_lista(); break; case '3': printf("Salida del programa principal\n"); default: printf( "Opcin no vlida\n" ); break; } } while (opcion!='3'); }

S-ar putea să vă placă și