Вы находитесь на странице: 1из 11

Disear y codificar un programa que permita controlar la venta de boletos de avin segn la categora y el destino de viaje.

Deber pedir la categora, el nmero de boletos y el destino como datos de entrada, calcular el costo de los mismos y desplegar la factura y en ella, el monto a cubrir. Las categoras y destinos disponibles sern los siguientes: Categoras: VIP Primera clase Segunda clase Turismo Destinos: New York Pars Roma Londres Madrid Bruselas Berln Sidney El usuario necesita ingresar: El destino, eligiendo un numero del 1 al 8, segn sea su asignacin dentro de una tabla. La categora, de su vuelo. Puede ser VIP (V), Primera Clase (P), Segunda Clase (S), Turismo(T). Ingresar la cantidad de asientos o boletos que desea adquirir. Ingresar el nombre del comprador del o de los boletos de avin. Espera que el programa devuelva: El nombre del comprador. El destino elegido. La categora del boleto de avin El numero de asientos o boletos adquiridos. El precio unitario del boleto. El total a pagar. Datos de entrada: variables: int destino,nBoletos; (tipo de dato entero) char categoria, nombre[40],nomDestino[8]; (tipo de dato string o carcter (1)) Datos de salida: float total; (tipo de dato real o float) char clase[14]; (tipo de dato string o carcter (1)) Metodologa a seguir y descripcin, para la programacin del planteamiento del problema. Documentar el programa con comentarios, el nombre, la descripcin, el programador, la fecha de creacin y ultima fecha de modificacin del programa. Adems de los comentarios entre lneas de las instrucciones mas significativas de cada bloque de instrucciones. Definir las directivas de preprocesador que son: #include<stdio.h>/* Funciones de entrada y salida */ #include<stdlib.h>/* Funciones del sistema */ #include<string.h> Definir 7 variables simples;

Necesitaremos 3 secuencias y 4 condiciones si. El usuario visualizara en pantalla un mensaje de bienvenida realizando una pausa en la ejecucin del sistema, para continuar con el proceso de ejecucin solo se necesita presionar una tecla para continuar y visualizar una tabla de los destinos y categoras de vuelos; donde se muestra en la interseccin del destino con categora el precio correspondiente al destino elegido y categora. El programa solicita al usuario que proporcione el destino ingresando el numero asignado en la tabla a la variable destino, de destinos y categoras. Los nmeros corresponden de la siguiente manera:

1. New York 2. Pars 3. Roma 4. Londres 5. Madrid 6. Bruselas 7. Berln 8. Sidney Una vez ingresado el destino, el usuario debe observar la tabla para elegir la categora y el precio. De esta manera al ingresar la inicial de la categora que se almacena en la variable categora, tambin se asigna el precio del vuelo en el proceso de los datos de entrada. 1. VIP (V) 2. Primera clase (P) 3. Segunda clase (S) 4. Turismo (T)

Tambin se le pide al usuario que ingrese la cantidad de boletos que desea comprar, ingresando el numero y asignndose a nBoletos. Por ultimo dato de entrada, es el nombre a quien se le factura la venta del (de los) boleto(s), asignndose este a una variable llamada nombre. Ahora le toca al programa procesar los datos de entrada de la siguiente manera: En vez de utilizar una condicin if, manejaremos las condiciones con un switch en caso de que se cumpla destino se procesa la secuencia de instrucciones correspondientes al numero de destino, si se cumple se asigna a nomDestino el nombre del destino, para posteriormente imprimirlo en la factura; paso siguiente se inicia otro switch en caso de que se cumpla categora V, P, S o T; se realiza la operacin aritmtica de nBoletos por el precio de la categora que cumple la condicin; tambin se le asigna a una variable clase la cadena de caracteres correspondiente a la categora, para imprimirlos en la factura; datos de salida. Por ultimo en el proceso de los datos, se aplican unos breaks para romper los switch y no continuar evaluando las siguientes instrucciones. Ya una vez procesados los datos de entrada, se procede a mostrar los datos de salida, imprimiendo en pantalla el nombre a quien se factura la cantidad de n boletos, el precio unitario del boleto y el total a pagar por el (los) boleto(s). Pseudocdigo Inicio

Datos de entrada: variables: int destino,nBoletos; (tipo de dato entero) char categoria, nombre[40],nomDestino[8]; (tipo de dato string o carcter (1)) Datos de salida: float total; (tipo de dato real o float) char clase[14]; (tipo de dato string o carcter (1)) escribir "**************Venta de boletos de AvionESAD*************; escribir | Num | Destinos | Categorias ; | escribir | | | VIP (V) | Primera clase (P) | Segunda Clase (S) | Turismo (T) ; | escribir | 1 | New York | 1500 | 1300 | 900 | 600; | escribir | 2 | Pars | 2300 | 1800 | 1200 | 950; | escribir | 3 | Roma | 2600 | 1900 | 1300 | 970; | escribir | 4 | Londres | 2100 | 1700 | 1100 | 850; | escribir | 5 | Madrid | 2250 | 1850 | 1300 | 1000; | escribir | 6 | Bruselas | 2270 | 1780 | 1180 | 930; | escribir | 7 | Berln | 2400 | 1990 | 1350 | 1050; | escribir | 8 | Sidney | 2900 | 2450 | 1850 | 1350; | escribir"Proporcione el destino eligiendo \nel numero que le corresponde en la tabla: "; leer destino; escribir "Proporcione la categoria de destino, V, P, S o T: "; leer categoria; escribir "Proporcione el numero de boletos que desea comprar: "; leer nBoletos; escribir "Proporcione a nombre de quien se factura: "; leer nombre; escribir "Factura a nombre: ",nombre; seleccionar(destino) { case 1: nomDestino="New York"; seleccionar(categoria) { caso 'V':total=nBoletos*1500;clase="VIP;break; caso 'P':total=nBoletos*1300;clase="Primera Clase;break; caso 'S':total=nBoletos*900;clase="Segunda Clase;break; caso 'T':total=nBoletos*600;clase="Turismo;break; } break; caso 2: nomDestino="Pars"; switch(categoria) { caso 'V':total=nBoletos*2300;clase="VIP;break; caso 'P':total=nBoletos*1800;clase="Primera Clase;break; caso 'S':total=nBoletos*1200;clase="Segunda Clase;break; caso 'T':total=nBoletos*950;clase="Turismo;break; } break; caso 3: nomDestino="Roma"; switch(categoria) { caso 'V':total=nBoletos*2600;clase="VIP;break; caso 'P':total=nBoletos*1900;clase="Primera Clase;break;

caso 'S':total=nBoletos*1300;clase="Segunda Clase;break; caso 'T':total=nBoletos*970;clase="Turismo;break; } break; caso 4: nomDestino="Londres"; switch(categoria) { caso 'V':total=nBoletos*2100;clase="VIP;break; caso 'P':total=nBoletos*1700;clase="Primera Clase;break; caso 'S':total=nBoletos*1100;clase="Segunda Clase;break; caso 'T':total=nBoletos*850;clase="Turismo;break; } break; caso 5: nomDestino="Madrid"; seleccionar(categoria) { caso 'V':total=nBoletos*2250;clase="VIP;break; caso 'P':total=nBoletos*1850;clase="Primera Clase;break; caso 'S':total=nBoletos*1300;clase="Segunda Clase;break; caso 'T':total=nBoletos*1000;clase="Turismo;break; } break; caso 6: nomDestino="Bruselas"; seleccionar(categoria) { caso 'V':total=nBoletos*2270;clase="VIP;break; caso 'P':total=nBoletos*1780;clase="Primera Clase;break; caso 'S':total=nBoletos*1180;clase="Segunda Clase;break; caso 'T':total=nBoletos*930;clase="Turismo;break; } break; caso 7: nomDestino="Berln"; seleccionar (categoria) { caso 'V':total=nBoletos*2400;clase="VIP;break; caso 'P':total=nBoletos*1900;clase="Primera Clase;break; caso 'S':total=nBoletos*1350;clase="Segunda Clase;break; caso 'T':total=nBoletos*1050;clase="Turismo;break; } break; caso 8: nomDestino="Sidney"; seleccionar (categoria) { caso 'V':total=nBoletos*2900;clase="VIP;break; caso 'P':total=nBoletos*2450;clase="Primera Clase;break; caso 'S':total=nBoletos*1850;clase="Segunda Clase;break; caso 'T':total=nBoletos*1350;clase="Turismo;break; } break; }

escribir "Destino a:, nomDestino; escribir Categora : , clase; escribir Asientos o boletos: ,nBoletos; escribir Precio unitario: ,total/nBoletos; escribir Total : , total; Fin

Cdigo en C
/* Fundamentos de Programacin Maestra: Mara Teresa Hernndez Elenes Programa: Venta de boletos de avin Programador: Jorge Humberto Crdova Meneses Descripcin: programa que permita controlar la venta de boletos de avin segn la categora y el destino de viaje Fecha de creacin: Octubre, 2012 ltima modificacin: Octubre, 2012 */ /* Directivas del procesador (bibliotecas) */ #include<stdio.h>/* Funciones de entrada y salida */ #include<stdlib.h>/* Funciones del sistema */ #include<string.h> /* Funcin Principal */ main( ) { /*Declaracin de variables y constantes */ int destino,nBoletos; float total; char categoria,clase[14], nombre[40],nomDestino[8]; /*Mensaje de bienvenida*/ fflush(stdin); /* Para limpiar el buffer de teclado */ printf("********************Venta de boletos de AvionESAD*************************\n"); system("pause");/*har una pausa antes de terminar la ejecucin*/ system("cls");/*Limpiara pantalla*/ printf(" ---------------------------------------------------------------------------\n");

printf("|

Categorias

|\n");

printf("|***************************************************************************|\n" ); printf("|Num| Destinos | VIP (V)| Primera Clase (P) | Segunda Clase (S)| Turismo(T)|\n"); printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 1 |New York | 1500 | 1300 | 900 | 600 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 2 |Pars | 2300 | 1800 | 1200 | 950 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 3 |Roma | 2600 | 1900 | 1300 | 970 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 4 |Londres | 2100 | 1700 | 1100 | 850 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 5 |Madrid | 2250 | 1850 | 1300 | 1000 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 6 |Bruselas | 2270 | 1780 | 1180 | 930 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 7 |Berln | 2400 | 1990 | 1350 | 1050 |\n");

printf("|---|-----------|--------|-------------------|------------------|-----------|\n"); printf("| 8 |Sidney | 2900 | 2450 | 1850 | 1350 |\n");

printf(" --------------------------------------------------------------------------- \n"); /*Datos de entrada*/ printf("Proporcione el destino eligiendo \nel numero que le corresponde en la tabla: "); scanf("%d",&destino); printf("Proporcione la categoria de destino, V, P, S o T: "); scanf("%s",&categoria); printf("Proporcione el numero de boletos que desea comprar: "); scanf("%d",&nBoletos); printf("Proporcione a nombre de quien se factura: "); scanf("%s",&nombre);

system("cls");/*Limpiara pantalla*/ fflush(stdin); /* Para limpiar el buffer de teclado */ printf("Factura a nombre: %s \n\n",nombre); switch(destino) { case 1: strcpy(nomDestino,"New York"); switch(categoria) { case 'V':total=nBoletos*1500;strcpy(clase,"VIP");break; case 'P':total=nBoletos*1300;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*900;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*600;strcpy(clase,"Turismo");break; } break;

case 2: strcpy(nomDestino,"Pars"); switch(categoria) { case 'V':total=nBoletos*2300;strcpy(clase,"VIP");break; case 'P':total=nBoletos*1800;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*1200;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*950;strcpy(clase,"Turismo");break; } break; case 3: strcpy(nomDestino,"Roma");; switch(categoria) { case 'V':total=nBoletos*2600;strcpy(clase,"VIP");break;

case 'P':total=nBoletos*1900;strcpy(clase,"Primera Clase");break;

case 'S':total=nBoletos*1300;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*970;strcpy(clase,"Turismo");break; } break; case 4: strcpy(nomDestino,"Londres"); switch(categoria) { case 'V':total=nBoletos*2100;strcpy(clase,"VIP");break; case 'P':total=nBoletos*1700;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*1100;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*850;strcpy(clase,"Turismo");break; } break; case 5: strcpy(nomDestino,"Madrid"); switch(categoria) { case 'V':total=nBoletos*2250;strcpy(clase,"VIP");break; case 'P':total=nBoletos*1850;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*1300;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*1000;strcpy(clase,"Turismo");break; } break; case 6: strcpy(nomDestino,"Bruselas"); switch(categoria) {

case 'V':total=nBoletos*2270;strcpy(clase,"VIP");break; case 'P':total=nBoletos*1780;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*1180;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*930;strcpy(clase,"Turismo");break; } break; case 7: strcpy(nomDestino,"Berln"); switch(categoria) { case 'V':total=nBoletos*2400;strcpy(clase,"VIP");break; case 'P':total=nBoletos*1900;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*1350;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*1050;strcpy(clase,"Turismo");break;

} break; case 8: strcpy(nomDestino,"Sidney"); switch(categoria) { case 'V':total=nBoletos*2900;strcpy(clase,"VIP");break; case 'P':total=nBoletos*2450;strcpy(clase,"Primera Clase");break; case 'S':total=nBoletos*1850;strcpy(clase,"Segunda Clase");break; case 'T':total=nBoletos*1350;strcpy(clase,"Turismo");break; } break; default: printf("no hay vuelo"); } printf("Destino a:Categoria: \n");

printf("%s%s \n\n",nomDestino,clase); printf("Asientos: P.U. printf(" %d %.2f Total: \n"); %.2f\n\n",nBoletos,total/nBoletos,total);

printf("\n\nAgenciaESAD le agradece su preferencia\n\n"); system("pause");/*har una pausa antes de terminar la ejecucin*/ }

Instruccin | Dato de entrada | Operaciones | Estado de la memoria(variables y constantes) | Datos de salida | Inicio | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | -|-|-|-|-|-|-| || Imprimir Proporcione el destino, eligiendo el numero que le corresponde en la tabla | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | -|-|-|-|-|-|-| | Proporcione el destino, eligiendo el numero que le corresponde en la tabla: | Leer destino | 1 | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1|-|-|-|-|-|-| || Imprimir "Proporcione la categoria de destino, V, P, S o T: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1|-|-|-|-|-|-| | Proporcione la categoria de destino, V, P, S o T: | Leer categoria | v | | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1|v|-|-|-|-|-| || Imprimir "Proporcione el numero de boletos que desea comprar: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1|v|-|-|-|-|-| | Proporcione el numero de boletos que desea comprar: | Leer nBoletos | 2 | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1|v|2|-|-|-|-| || Imprimir "Proporcione a nombre de quien se factura: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1|v|2|-|-|-|-| | Proporcione a nombre de quien se factura: | Leer nombre | Gabriel | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | - | - | - | || Seleccionar (destino) | - | nomDestino=New York; | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | - | - | ||

Seleccionar (categora) | - | total=nBoletos*1500=3000;clase="VIP"; | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | || Imprimir"Factura a nombre: " | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | | Factura a nombre: Gabriel | Imprimir Destino a: | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | | Destino a: New York | Imprimir Categoria: | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | | Categoria: VIP | Imprimir Numero de boletos: | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | | Numero de boletos: 2 | Imprimir Precio Unitario | - | 3000/2=1500 | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | | Precio Unitario: 1500 | Imprimir Total a pagar: | - | - | destino | categoria | nBoletos | nombre | nomDestino | total | clase | 1 | v | 2 | Gabriel | New York | 3000 | VIP | | Total a pagar: 3000