[ Foro de C++ ]
. Realizar un algoritmo en Pseudocódigo para manejar un complejo de 4 cabañas.
En el complejo existen 2 cabañas CHICAS hasta 4 personas (solo para 1,2,3 o 4 personas) y 2 cabañas GRANDES hasta 6 personas (solo para 5,6 personas excepto que estén ocupadas las más chicas, en ese caso se puede asignar a no menos de 4 personas).
El precio de las cabañas difiere de acuerdo a la cantidad de personas. Si la cantidad de personas es igual o menor a 2, el precio es de 200 pesos la noche, si la cantidad es menor o igual a 4 es de 290 pesos la noche y si la cantidad es menor o igual a 6 es de 380 pesos. Si las cabañas de hasta 4 personas están ocupadas, se puede asignar una cabaña de 6, a 4 personas (no menos) por el mismo precio que una de hasta 4. Existe una Promoción, que por cada 7 días de estadía, se cobran solo 6.
Las cabañas funcionan durante el periodo que abarca desde el mes de enero al mes de marzo.
Luego que una persona realice una operación, se mostrara en pantalla, El nombre de la persona responsable del alquiler, la cantidad de personas a hospedar, la cantidad de días seleccionados y el monto total a pagar.
Al final del periodo se quiere saber:
? El porcentaje de cantidad de días ocupados de las cabañas respecto al total de días del periodo.
? La cantidad de dinero recaudado por cada cabaña.
? La cantidad total de personas hospedadas en el período.
? La cantidad de veces que se ocupó una cabaña grande por 4 personas, por estar ocupadas las cabañas chicas.
? La cantidad de veces que no se pudo alquilar una cabaña por falta de disponibilidad (por estar todas ocupadas, o por estar ocupadas las chicas, y las personas ser menos de 4).
¿Qué es lo que no sabes hacer?
yo lo estoy encarando de esta manera. pero tengo dudas. creo que puede ser mejor que esto.
proceso sin_titulo
responsable<-0
cantidadp<-0
diascant<-0
mes<-0
tresmeses<-90
anio<- 0
cab1<-0
cab2<-0
cab3<-0
cab4<-0
Escribir 'ingrese el nombre del responsable del alquiler'
Leer responsable
Escribir 'ingrese la cantidad de personas'
Leer cantidadp
Escribir 'ingrese la canidad de dias'
Leer diascant
Escribir 'ingrese el mes'
Escribir ' (1) Enero'
Escribir ' (2) Febrero'
Escribir ' (3) Marzo'
Leer mes
imprimir "ingrese el año"
leer anio
Segun anio Hacer
2012:
tresmeses= tresmeses+1
2016:
tresmeses= tresmeses+1
2020:
tresmeses= tresmeses+1
2024:
tresmeses= tresmeses+1
2028:
tresmeses= tresmeses+1
2032:
tresmeses= tresmeses+1
Fin Segun
FinProceso
De momento se va acercando. Intuyo que ese "segun" es para tener en cuenta los años bisiestos, pero eso se puede hacer también con una expresión matemática: son bisiestos todos los años que son múltiplo de 400, y también los que son múltiplo de 4 pero no de 100 (2000 lo es, 2004 también, pero 1900 no).
Como único error por ahora, el nombre del responsable lo estás tomando como un valor numérico, y debería ser un texto.
Ahora faltan muchos "Si", para comprobar todas las posibles condiciones que te piden. ¡Adelante con ello!
Cuando funcione bien con datos de una única cabaña, deberás ampliarlo para que tenga una estructura repetitiva (muchas reservas), pero ve paso a paso para asegurarte de que cada bloque funcione antes de escribir mucho.
bueno creo que ya esta no lo he probado. que le parece? como quedo?
Programa Cabañas
Variables:
Ocupada1, ocupada2,ocupada3,ocupada4,ocupada5,ocupada6,i,cantidad
Hacer:
Repetir para i:= 1, 90 // contador de fin de periodo? suponiendo 30 días por mes)
Imprimir ? ingrese el la cantidad de ocupantes (0 = fin del dia)?
Leer cantidad // Cantidad de personas en la cabaña
Repetir mientras (cantidad <> 0) ; // se repite mientras el valor no ingresado no sea 0
Imprimir ? ingrese la cantidad de dias?
Leer dia // guarda la cantidad de días a alquilar
Imprimir ?ingrese el nombre y apellido del responsable?
Leer responsable // nombre del que paga todo lo que se rompa
Lugar:= no // variable que informa si se pudo o no alquilar una cabaña
Si (cantidad <= 2) // monto a pagar de acuerdo a la cantidad de personas
Monto:= 200
finsi
Si (cantidad <= 4) y (cantidad > 2) // monto a pagar de acuerdo a la cantidad de personas
Monto := 290
finsi
Si (cantidad > 4) // monto a pagar de acuerdo a la cantidad de personas
Monto:=380
finsi
dias := dia ? ent (dia/7) // resta el día por promoción si corresponde
si cantidad <= 4 // Comienzo a buscar una cabaña disponible,
primero evaluó hasta 4 personas
Si ocupada1= 0 // variable que indica cantidad de días pendientes en cabaña1
ocupada1:= días // guardo la cantidad de días a ser ocupada
cab1:= cab1+días // Acumulo los días que estuvo alquilada esa cabaña
montot:= monto*días // Recaudacion o monto a pagar por ese alquiler
lugar := si // para indicar que esa persona pudo alquilar una cabaña
res:= cabaña1 // indico el nombre de la cabaña alquilada
montototal1:= montototal1 + montot // acumulador que indica la recaudación total de la cabaña
Sino
Si ocupada2= 0
Ocupada2:=dias
Cab2:= cab2 + dias
Lugar:= si
res:= cabaña2
montototal2:= montototal2 + montot
Sino
Si ocupada3=0
Ocupada3:= dias
Cab3:= cab3+dias
Lugar:=si
res:= cabaña3
montototal3:= montototal3 + montot
Si no
Si cantidad = 4 // caso particular de 4 personas en una cabaña grande
Si ocupada4= 0
Ocupada4:= dias
Cab4:= cab4+dias
lugar := si
cab6a4:=cab6a4+1
res:= cabaña4
montototal4:= montototal4 + montot
Sino
Si ocupada5= 0
Ocupada5:=dias
Cab5:= cab5 + dias
Lugar:= si
cab6a4:=cab6a4+1
res:= cabaña5
montototal5:= montototal5 + montot
sino
Si ocupada6=0
Ocupada6:= dias
Cab6:= cab6+dias
Lugar:=si
cab6a4:=cab6a4+1
res:= cabaña6
montototal6:= montototal6 + montot
finsi
finsi
finsi
finsi
finsi
Si no // indica que la cantidad de personas es mayor que 4
Si Ocupada4:= 0
Ocupada4:=dias
Cab4:= cab4+cantidad
lugar := si
res:= cabaña4
montototal4:= montototal4 + montot
Sino
Si ocupada5= 0
Ocupada5:=dias
Cab5:= cab5 + cantidad
Lugar:= si
res:= cabaña5
montototal5:= montototal5 + montot
sino
Si ocupada6=0
Ocupada6:= dias
Cab6:= cab6+cantidad
Lugar:=si
res:= cabaña6
montototal6:= montototal6 + montot
Finsi
Finsi
Finsi
Finsi
Si lugar = no // sirve para contar la cantidad de veces que no se pudo alquilar
Imprimir ? no existe lugar para la cantidad de personas ingresadas?
Sinlugar:= sinlugar+1
Si no si
Imprimir ?se ha reservado la cabaña?, res, ?a nombre de?, responsable, ? y el monto a pagar es? (monto*dias)
Imprimir ? muchas gracias? vuelvas prontossss?
Imprimir ? ingrese el la cantidad de ocupantes (0 = fin del dia)?
Leer cantidad
Cantotper:= Cantotper+cantidad
Fin repetir mientras
Si ocupada1>0; // resta un dia a la cabaña alquilada
ocupada1:= ocupada1 ? 1;
fin si
Si ocupada2>0;
Ocupada2:= ocupada2 ? 1; // resta un dia a la cabaña alquilada
fin si
Si ocupada3>0;
Ocupada3:= ocupada3 ? 1; // resta un dia a la cabaña alquilada
fin si
Si ocupada4>0;
Ocupada4:= ocupada4 ? 1; // resta un dia a la cabaña alquilada
fin si
Si ocupada5>0; // resta un dia a la cabaña alquilada
Ocupada5:= ocupada5 ? 1;
fin si
Si ocupada6>0;
Ocupada6:= ocupada6 ? 1; // resta un dia a la cabaña alquilada
fin si
Fin repetir para
totDalquil:= cab1+cab2+cab3+cab4+cab5+cab6 // total de días alquilados
imprimir ? el porcentaje de la cabaña 1 es?,(cab1*100)/ totDalquil , ?del total? //porcentajes varios
imprimir ? el porcentaje de la cabaña 2 es?,(cab2*100)/ totDalquil , ?del total?
imprimir ? el porcentaje de la cabaña 3 es?,(cab3*100)/ totDalquil , ?del total?
imprimir ? el porcentaje de la cabaña 4 es?,(cab4*100)/ totDalquil , ?del total?
imprimir ? el porcentaje de la cabaña 5 es?,(cab5*100)/ totDalquil , ?del total?
imprimir ? el porcentaje de la cabaña 6 es?,(cab6*100)/ totDalquil , ?del total?
imprimir ?el dinero recaudado por la cabaña 1 es? montototal1
imprimir ?el dinero recaudado por la cabaña 2 es? montototal2
imprimir ?el dinero recaudado por la cabaña 3 es? montototal3
imprimir ?el dinero recaudado por la cabaña 4 es? montototal4
imprimir ?el dinero recaudado por la cabaña 5 es? montototal5
imprimir ?el dinero recaudado por la cabaña 6 es? montototal6
imprimir ?la cantidad total de personas hospedadas en el periodo es? Cantotper
imprimir? la cantidad de veces que se alquilo una cabana grande a 4 personas es? cab6a4
imprimir? la cantidad de veces que no se pudo alquilar una cabaña es? sinlugar
fin hacer
fin programa
La apariencia en general es buena, aunque es un tanto repetitivo. Si ya has aprendido a usar arrays, varias partes podrían ser mucho más compactas.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)