[ Foro de C++ ]

ayuda con pseint

14-Apr-2015 04:41
sergio benitez
5 Respuestas

. 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).


17-Apr-2015 17:24
Nacho Cabanes (+83)

¿Qué es lo que no sabes hacer?


19-Apr-2015 22:54
sergio benitez

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


 


20-Apr-2015 09:59
Nacho Cabanes (+83)

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.


22-Apr-2015 04:17
sergio benitez

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


25-Apr-2015 09:57
Nacho Cabanes (+83)

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.)