Está en la página 1de 10

Flight Recorder

-Anlisis y Diseo de Algoritmos-

Maestra Carolina Rohde Faraudo


Integrantes del Equipo:
-Gijn Monroy Andrea
-Hall Lagunes Jaime
-Hernndez De La Lanza Arturo

Mircoles 25 de noviembre de 2015

Planteamiento del Problema


Un aeropuerto tiene una cantidad determinada de vuelos al da, por lo cual necesita un
programa para calcular el total de pasajeros y total de ganancias obtenidas semanalmente.
En un arreglo de estructura se guardarn los datos necesarios para calcular el total de pasajeros
y el total de ganancias.
Para ello se requiere la informacin: destino, origen, nmero de pasajeros (validar el destino
con los 3 lugares que se mostrarn en el programa y validar el nmero de pasajeros menores a
250 personas), tipo de avin, nmero de vuelo y nmero de vuelos diferentes en la semana.
Se preguntar la frecuencia semanal de cada vuelo y se validar para que no sea mayor a 7; y
en el programa se multiplicar la frecuencia por 24,000 litros de gasolina (medida estndar)
para saber cuntos litros gast el vuelo.
La ganancia por cada vuelo ser calculado en una funcin que devolver la cantidad de dinero
que hubo de ingreso en cada vuelo. El avin tendr una tarifa fija de 2,000 pesos.
Al entrar al men:
1) Mostrar la tabla con los datos obtenidos. Ordenados por el nmero de vuelo (seleccin).
2) Hacer una bsqueda conforme al nmero de vuelo que mostrar la informacin de ese
en especfico.
3) Imprimir el mximo y mnimo de ganancias de cada vuelo.
4) Imprimir el total de ganancias de todos los vuelos y total de pasajeros en todos los
vuelos semanalmente.
Vuelo

Origen

Destino

Frecuencia

# pasajeros

Cdigo Fuente

Total de Tipo avin


pasajeros

Ganancia
total

Gasolina lts

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace ConsoleApplication23
{
class Program
{
struct aeropuerto
{
public int vuelo, totalpasavuelo, frec;
public double ganancia, gasolina;
public int[] numpasa;
public string dest, tipo, origen;
}
static void Main(string[] args)
{
int totalpasa = 0, n = 0, cont = 0, cont1 = 0, resp, resp1 = 0, encontro = 0, totaltotpasa
= 0;

int i, j, k;
double totaltotgan = 0;
aeropuerto menor;

Console.WriteLine("Bienvenido a Flight Recorder");


Console.Write("Cuntos vuelos diferentes hubo en la semana? ");//Esto es el nmero
de vuelos diferentes que hubo en la semana.
n = int.Parse(Console.ReadLine());
aeropuerto[] tabla = new aeropuerto[n];
for (cont = 0; cont < n; cont++)
{
Console.WriteLine();
Console.Write("Cul es el nmero de vuelo del vuelo " + (cont + 1) + "? ");
tabla[cont].vuelo = int.Parse(Console.ReadLine());
do
{
Console.Write("Cul es el origen del vuelo " + tabla[cont].vuelo + "? (CAN - GDL MTY) ");
tabla[cont].origen = Console.ReadLine();
tabla[cont].origen = tabla[cont].origen.ToUpper();
if (tabla[cont].origen != "CAN" && tabla[cont].origen != "GDL" &&
tabla[cont].origen != "MTY") //Se valida que el origen pertenezca a las opciones dadas.
Console.WriteLine("ORIGEN INVLIDO");
}
while (tabla[cont].origen != "CAN" && tabla[cont].origen != "GDL" &&
tabla[cont].origen != "MTY");
do
{
MTY) ");

Console.Write("Cul es el destino del vuelo " + tabla[cont].vuelo + "? (CAN - GDL -

tabla[cont].dest = Console.ReadLine();
tabla[cont].dest = tabla[cont].dest.ToUpper();
if (tabla[cont].dest == tabla[cont].origen) //Se valida que el destino no sea el
mismo al origen.
Console.WriteLine("EL DESTINO NO PUEDE SER IGUAL AL ORIGEN");
if (tabla[cont].dest != "CAN" && tabla[cont].dest != "GDL" && tabla[cont].dest !=
"MTY") //Se valida que el destino pertenezca a las opciones dadas.
Console.WriteLine("DESTINO INVLIDO");
}
while (tabla[cont].dest != "CAN" && tabla[cont].dest != "GDL" && tabla[cont].dest !=
"MTY" || tabla[cont].dest == tabla[cont].origen);
do
{
");

Console.Write("Cul fue la frecuencia semanal del vuelo " + tabla[cont].vuelo + "?


tabla[cont].frec = int.Parse(Console.ReadLine());

if (tabla[cont].frec > 7)//Se valida que la frecuencia no sea mayor a 7, ya que el


avin no puede volar ms de una vez al da.
{
Console.WriteLine("FRECUENCIA INVLIDA - NO MS DE UN VUELO POR DA A LA
SEMANA");
}
}
while (tabla[cont].frec > 7);
tabla[cont].numpasa = new int[tabla[cont].frec];
for (cont1 = 0; cont1 < tabla[cont].frec; cont1++)
{
do
{
Console.Write("Cul es el nmero de pasajeros de la frecuencia " + (cont1 + 1)
+ " del vuelo " + tabla[cont].vuelo + "? ");
tabla[cont].numpasa[cont1] = int.Parse(Console.ReadLine());
if (tabla[cont].numpasa[cont1] > 250) //Se valida que el nmero de pasajeros no
sea mayor a 250.
Console.WriteLine("EXCEDE EL NMERO DE PASAJEROS");
if (tabla[cont].numpasa[cont1] <= 0) //Se valida que el nmero de pasajeros no
sea cero o menor.
Console.WriteLine("NMERO INVLIDO - VUELO VACO");
}
while (tabla[cont].numpasa[cont1] > 250 || tabla[cont].numpasa[cont1] <= 0);
totalpasa = totalpasa + tabla[cont].numpasa[cont1];
}
tabla[cont].totalpasavuelo = totalpasa;
totalpasa = 0;
Console.Write("Qu tipo de avin realiza el vuelo " + tabla[cont].vuelo + "? ");
tabla[cont].tipo = Console.ReadLine();

tabla[cont].gasolina = tabla[cont].frec * 24000; //Calcula la cantidad de gasolina por


avin en la semana, a partir de la frecuencia.
tabla[cont].ganancia = totaldinero(tabla[cont].totalpasavuelo); //Calcula la ganancia
total de ese vuelo en la semana, a partir de el total de pasajeros. Este paso lo hace por funcin,
mandando el total de pasajeros de ese vuelo en la semana.
}
Console.WriteLine("N Vuelo\tOrigen\tDestino\t\tFrecuencia\t\t\tTotal pasajeros\t\tTipo
avin \t Ganancia Total \t Litros de Gasolina");//Escribe el ttulo para la tabla.
for (cont = 0; cont < n; cont++)
{
Console.WriteLine();
Console.Write(tabla[cont].vuelo + "\t\t" + tabla[cont].origen + "\t" + tabla[cont].dest
+ "\t\t" + tabla[cont].frec + "\t");//Escribe la tabla completa desordenada.
for (cont1 = 0; cont1 < tabla[cont].frec; cont1++)
{
Console.Write(tabla[cont].numpasa[cont1] + "\t");
}
Console.WriteLine(tabla[cont].totalpasavuelo + "\t\t" + tabla[cont].tipo + "\t" +
tabla[cont].ganancia + "\t\t" + tabla[cont].gasolina);
}
do
{
Console.WriteLine();
Console.WriteLine("Elija la opcin deseada:");// Muestra el men.
Console.WriteLine();
Console.WriteLine("1. Tabla ordenada por nmero de vuelo");
Console.WriteLine("2. Bsqueda por vuelo");
Console.WriteLine("3. Mximo y mnimo de ganancias de cada vuelo");
Console.WriteLine("4. Total de pasajeros y de ingeresos en la semana");
Console.WriteLine("5. FIN");
resp = int.Parse(Console.ReadLine());
switch (resp)
{
case 1:
{
Console.WriteLine("N Vuelo\tOrigen\tDestino\t\tFrecuencia\t\t\tTotal
pasajeros\t\tTipo avin \t Ganancia Total \t Litros de Gasolina");
for (i = 0; i < n; i++) //Ordena usando el mtodo de seleccin de menor a
mayor, a partir del nmero de vuelo.
{
menor = tabla[i];
k = i;
for (j = i + 1; j < n; j++)
{
if (tabla[j].vuelo < menor.vuelo)
{
menor = tabla[j];
k = j;
}
}
tabla[k] = tabla[i];
tabla[i] = menor;

}
for (cont = 0; cont < n; cont++)//Escribe la tabla ordenada a partir del
nmero de vuelo (de menor a mayor).
{
Console.WriteLine();
Console.Write(tabla[cont].vuelo + "\t\t" + tabla[cont].origen + "\t" +
tabla[cont].dest + "\t\t" + tabla[cont].frec + "\t");
for (cont1 = 0; cont1 < tabla[cont].frec; cont1++)
{
Console.Write(tabla[cont].numpasa[cont1] + "\t");
}
Console.WriteLine(tabla[cont].totalpasavuelo + "\t\t" + tabla[cont].tipo +
"\t" + tabla[cont].ganancia + "\t\t" + tabla[cont].gasolina);
}
}

break;

case 2:
{

Console.WriteLine("Cul es el nmero de vuelo que desea buscar? ");


resp1 = int.Parse(Console.ReadLine());
encontro = -1; //Inicia la bsqueda por nmero de vuelo.
for (cont = 0; cont < n; cont++)
{
if (tabla[cont].vuelo == resp1)//Si lo encuentra, lo escribe.
{
Console.WriteLine("N Vuelo\tOrigen\tDestino\t\tFrecuencia\t\t\tTotal
pasajeros\t\tTipo avin \t Ganancia Total \t Litros de Gasolina");
encontro = cont;
Console.Write(tabla[cont].vuelo + "\t\t" + tabla[cont].origen + "\t" +
tabla[cont].dest + "\t\t " + tabla[cont].frec + "\t");
for (cont1 = 0; cont1 < tabla[cont].frec; cont1++)
{
Console.Write(tabla[cont].numpasa[cont1] + "\t");
}
Console.WriteLine(tabla[cont].totalpasavuelo + "\t\t" + tabla[cont].tipo +
"\t" + tabla[cont].ganancia + "\t\t" + tabla[cont].gasolina);
}
}
if (encontro == -1) //Si no lo encuentra, muestra que no estaba en la lista.
{
Console.WriteLine("VUELO NO EXISTENTE EN LA LISTA");
}
break;
}
case 3:

{
Console.WriteLine("\t\t\t N Vuelo\tOrigen\tDestino\t\tFrecuencia\t\t\tTotal
pasajeros\t\tTipo avin \t Ganancia Total \t Litros de Gasolina");
for (i = 0; i < n; i++)//Ordena de menor a mayor, para despus tomar el
primer valor como el mnimo y el ltimo como le mximo.
{
menor = tabla[i];
k = i;
for (j = i + 1; j < n; j++)
{
if (tabla[j].ganancia < menor.ganancia)
{
menor = tabla[j];
k = j;
}
}
tabla[k] = tabla[i];
tabla[i] = menor;
}
{ //Muestra los vuelos con menor y mayor ganancia.
Console.Write("Vuelo con mayor ganancia: " + tabla[n - 1].vuelo + "\t\t" +
tabla[n - 1].origen + "\t" + tabla[n - 1].dest + "\t\t" + tabla[n - 1].frec+"\t");
for (cont1 = 0; cont1 < tabla[n - 1].frec; cont1++)
{
Console.Write(tabla[n-1].numpasa[cont1] + "\t");
}
Console.WriteLine(tabla[n - 1].totalpasavuelo + "\t\t" + tabla[n - 1].tipo +
"\t" + tabla[n - 1].ganancia + "\t\t" + tabla[n - 1].gasolina);
}
Console.Write("Vuelo con menor ganancia: " + tabla[0].vuelo + "\t\t" +
tabla[0].origen + "\t" + tabla[0].dest + "\t\t" + tabla[0].frec+"\t");
for (cont1 = 0; cont1 < tabla[0].frec; cont1++)
{
Console.Write(tabla[0].numpasa[cont1] + "\t");
}
Console.WriteLine(tabla[0].totalpasavuelo + "\t\t" + tabla[0].tipo + "\t" +
tabla[0].ganancia + "\t\t" + tabla[0].gasolina);
break;
}
case 4:
{ //Calcula el gran total de ganancia en la semana y el gran total de pasajeros
transportados en la semana.
for (cont = 0; cont < n; cont++)
{
totaltotgan = totaltotgan + tabla[cont].ganancia;
totaltotpasa = totaltotpasa + tabla[cont].totalpasavuelo;
}
Console.WriteLine("El gran total de ganancias en la semana es de $" +
totaltotgan); //Muestra el gran total de ganancia en la semana.
Console.WriteLine("El gran total de pasajeros transportados en la semana es
de " + totaltotpasa + " pasajeros");//Muestra el gran total de pasajeros en la semana.
break;

}
case 5:
{
Console.WriteLine("FIN DEL PROGRAMA"); //Te indica que has seleccionado la
ocpin de salir.
break;
}
default:
{

Console.WriteLine("OPCIN ELEGIDA NO DISPONIBLE"); //Te indica que la


opcin elegida en el men, no est.
break;
}
}
}
while (resp != 5);

Console.ReadLine();
}
static double totaldinero(int tp) //Funcin que calcula el total de ganancia de cada vuelo.
{
double tot;
tot = tp * 2000;
return tot;
}

Resultado de la Ejecucin

También podría gustarte