miércoles, 21 de mayo de 2014

Practica 5

Haga programas utilizando funciones en C++. La solución del programa debe ser por diagrama de flujo o pseudocódigo o bloques.

PROBLEMA 1
Una pequeña aerolínea requiere de un sistema automático de reservaciones. A usted se le ha pedido que programe un nuevo sistema. Usted debe escribir un programa que asigne los asientos, en cada vuelo, del único avión de la aerolínea (capacidad de 10 asientos). Su programa debe desplegar el siguiente menú de alternativas:
"Por favor, digite 1 para primera clase"
"Por favor, digite 2 para clase turista "
Si la persona digita 1, su programa debe asignar un asiento en la sección de primera clase (asientos 1 a 5). Si la persona digita 2, su programa debe asignar un asiento en la clase turística (asientos 6 a 10). Su programa debe imprimir un pase de abordado que indique el numero de asiento de la persona y si esta en la sección de primera clase o en la sección de clase turista.

Utilice un arreglo con un solo subconjunto para representar los asientos del avión. Inicialize a cero todos los elementos del arreglo para indicar que todos los asientos están vacíos. Mientras se asigna cada asiento, el valor de los elementos correspondientes al arreglo se establece en 1, para indicar que el asiento ya no esta disponible.

Por supuesto, su programa nunca debe asignar un asiento que ya esta asignado. Cuando la sección de primera clase esta llena, su programa debe preguntar a la persona si acepta que se le coloque en la sección turística (y viceversa). Si acepta, entonces haga la asignación apropiada del asiento. Si no acepta, entonces despliegue el mensaje "El siguiente vuelo parte en tres horas".
- Código

- Ejecución

- Pseudocódigo


Inicio
{
asiento[10]={0}:int
clase=0, i:int
w:char
do{
select_clase(clase)
do{
switch(clase)
{
case 1:
{
clase=primera(asiento, clase)
}
break
case 2:
{
clase=segunda(asiento,clase)
}break;
case 3:
{
return 0
}break;
default:
write"  Opcion Invalida" break;
}
}while(clase==1||clase==2);
write" Desea continuar (s/n)? "
read w
if(w=='n')
then
{
return 0
}}while(w=='s');
}


funcion segunda(asiento[10]: int, clase: int)
{
i=5: int
s: char
while(i<=9 )
{
if(asiento[i]!=1)
then
{
asiento[i]=1
write "-----PASE DE ABORDAR-----"
write " Vuelo en CLASE TURISTA     Asiento Numero: ", (i+1)
}
else
{
i++
if(i==10)
then
{
write"  Los asientos de CLASE TURISTA estan llenos. "
write"  Desea que lo coloquemos en la primera clase? (s/n) "
read s
if(s=='n')
then
{
write"  EL SIGUIENTE VUELO PARTE EN TRES HORAS."
}
else
{
clrscr()
}
if(s=='s')
then
return 1
}}}}



funcion primera(asiento[10]:int, clase:int)
{
s: char
i=0, j=0:int
while(i<=4 && j==0)
{
if(asiento[i]!=1)
then
{
asiento[i]=1
j=1
write"-----PASE DE ABORDAR-----"
write"   Vuelo en PRIMERA CLASE    Asiento Numero: ",(i+1)
}
else
{
i++
if(i==5)
then
{
write"  Los asientos de PRIMERA CLASE estan llenos. "
write"  Desea que lo coloquemos en la clase turista? (s/n) "
read s
if(s=='n')
then
{
write"  EL SIGUIENTE VUELO PARTE EN TRES HORAS."
}
else{
clrscr()
}
if(s=='s')
then
return 2
}}}}


funcion select_clase(clase: int)
{
clrscr()
write"-----BIENVENIDO-----"
write" Elija una de las siguientes opciones:"
write" Por favor, digite 1 para primera clase"
write" Por favor, digite 2 para clase turista"
write" Por favor, digite 3 para salir"
write" Opcion: "
read clase
clrscr()
}

PROBLEMA 2
Escriba un programa para generar 14 numero enteros en un arreglo llamado emax y encuentre el máximo valor introducido. Después de desplegar los números, imprima estos dos mensajes:

El valor máximo es:
Este es el elemento numero_____en la lista de números

También localice el menor de los datos introducidos.
- Código

- Ejecución

- Pseudocódigo
Inicio

numeros[14] : int
LeerDatos(numeros)
write "El valor maximo es: "
mayor(numeros)
Write "Este es el elemento numero"
posicion(numeros)
Write "en la lista de numeros"
write "El numero  menor es: "
menor(numeros)

Fin

Funcion LeerDatos(valor[14]: int)
{
  i: int
  for(i=0 to 13 step i++)
   {
    write "Numero", (i+1), " : "
    read valor[i]
    }
}

Funcion mayor(emax[14]: int)
 {
  i,mayor: int
  mayor=emax[0]
  for(i=0 to 13 step i++)
   {
    if (emax[i]>mayor)
     mayor=emax[i]
    }
   write "    ",mayor
 }


Funcion menor(emin[14]: int)
 {
  int i,menor: int
  menor=emin[0]
  for(i=0 to 13 step i++)
   {
    if (emin[i]<menor)
    menor=emin[i]
    }
   write"    ",menor
 }


Funcion posicion(p[14]: int)
 {
  int i, pos=0, mayor=p[0]
  for(i=0 to 13 step i++)
  {
   if (p[i]>mayor)
    {
     mayor=p[i]
     pos=i+1
     }
    }
   write"    ",pos
 }


PROBLEMA 3
Escriba un programa para introducir los siguientes números enteros en un arreglo llamado calificaciones: 89, 95, 72, 83, 99, 54, 86, 75, 92, 73, 79, 75, 82, 93. Al introducir cada numero , súmelo a un total. Después de introducir todos los números y obtener el total, calcule el promedio y úselo para determinar la desviación de cada valor con respecto al promedio. Almacene cada desviación en un arreglo llamado desviaciones. Haga que el programa despliegue cada desviación a un lado del elemento correspondiente del arreglo calificaciones y calcule la varianza.
- Código

- Ejecución

- Pseudocódigo
Inicio
cal[14]:int
desv[14]:real
leer(cal)
total(cal)
write"el total es:", total
promedio(total)
write "el promedio es" promedio
desviacion(promedio, cal, desv)
variancia(desv)
Fin

funcion leer(cal[14]:int)
{
e: int 
for(e=0 to 14 step e++)
{
write "calificacion", cal[e]
read cal[14]
}
}

funcion total(cal[14])
{
t,i: int
t=0;
for(i=0 to 14 step i++)
{
t=Cal[14]+t
}
return t
}

funcion promedio(total)
{
prom: real
prom=total/14.0
return prom
}

funcion desviacion(promedio, cal, desv)
{
h: int
for (h=0 to 14 step h++)
{
desv[h]=cal-promedio
write "la desviacion de la calificacion", cal," es ",desv
}
}

funcion variancia(desv)
{
x: int
real desvtotal,variancia
desvtotal=0
for(x=0 to 14 step x++)
{
desvtotal=(desv*desv)+desvtotal
}
variancia=desvtotal/14.0
write "la variancia es de ", variancia
}

PROBLEMA 4
Escriba un programa que especifique tres arreglos unidimensionales denominados corriente, resistencia y voltios. Cada arreglo debe ser capaz de almacenar 8 elementos. Introduzca valores para los arreglos, corriente y resistencia. Los datos introducidos en el arreglo voltios deben ser el producto de los valores correspondientes a los arreglos corriente y resistencia (entonces voltios[i]=corriente[i]*resistencia[i]). Después de introducir los datos, despliegue la siguiente salida:

Corriente Resistencia Voltios
Despliegue el valor correcto de cada encabezado.
- Código

- Ejecución

- Pseudocódigo
Inicio

resistencia[8],corriente[8],voltios[8]:int

write"Introduzca la resistencia"
introducir_datos(resistencia)
write"Introduzca la correinte"
introducir_datos(corriente)
write"Corriente    Resistencia    Voltios"
write"------------------------------------"
desplegar(voltios,resistencia,corriente)

fin

funcion introducir_datos(valor[8]:int)
{
i: int
for(i=0 to 8 step i++)
{
write "Dato",(i+1),":"
read valor[i]
}
}

funcion desplegar(v[8]:int, r[8]:int, c[8]:int)
{
i: int
for(i=0 to 8 step i++)
{
v[i] = r[i] * c[i]
write" ",c[i], " ", r[i], " ",v[i]
}
}
PROBLEMA 5
Haga un programa para generar 25 números en forma aleatoria y los ordene en forma ascendente.
- Código

- Ejecución

- Pseudocódigo
Inicio
valor[25]:int
generar_numero(valor)
ordenar(valor)
desplegar(valor)
Fin

funcion generar_numeros(v[25]:int)
{
i:int
srand(time(NULL))
write "Valores Aleatorios"
for(i=0 to 24 step i=i+1)
{
v[i]=rand()%100+1
write "Valor No.",(i+1),": ",v[i]
}
}

funcion ordenar(v[25]:int)
{
i, j, vtemp:int
for(i=0 to 24 step i=i+1)
for(j=0 to 23 step j=j+1)
if(v[j]>v[j+1])
then
{
vtemp=v[j]
v[j]=v[j+1]
v[j+1]=vtemp
}
}

funcio desplegar(v[25]:int)
{
i:int
write "Valores Ordenados"
for(i=0 to 12 step i=i+1)
write v[i], ", "
for(i=13 to 24 step i=i+1)
{
if(i!=24)
then
write v[i], ", "
else
write v[i], "."
}
}

PROBLEMA 6
Haga un programa para generar 30 números en forma aleatoria y despliegue una lista de los números pares y otra lista de números impares.
- Código

- Ejecución

- Pseudocódigo
Inicio
parmax, impmax, valor[30], pares[30], impares[30]:int
generar_numeros(valor)
separador(valor, pares, impares, parmax, impmax)
Write "Valores Impares: ",impmax
desplegar_lista(impares, impmax)
Write "Valores Pares: ",parmax
desplegar_lista(pares, parmax)
Fin

funcion generar_numeros(v[25]:int)
{
i:int
srand(time(NULL))
write "Valores Aleatorios"
for(i=0 to 29 step i=i+1)
{
v[i]=rand()%100+1
write "Valor No.",(i+1),": ",v[i]
}
}

funcion separador(v[30]:int, par[30]:int, imp[30]:int, pmax:int, imax:int)
{
i, contp=0, conti=0:int
residuo:real
pmax=0
imax=0
for(i=0 to 29 step i=i+1)
{
residuo=v[i]%2
if(residuo==0)
then
{
par[contp]=v[i]
contp=contp+1
pmax=pmax+1
}
else
{
imp[conti]=v[i]
conti=conti+1
imax=imax+1
}
}
}

funcion desplegar_lista(lista[30]:int, valmax:int)
{
i:int
for(i=0 to valmax-1 step i=i+1)
{
if(i!=valmax-1)
then
write lista[i], ", "
else
write lista[i], "."
}
}

No hay comentarios:

Publicar un comentario