
Ejercicio con WHILE-IF-AND-OR, etc
Publicado por chepe (2 intervenciones) el 17/05/2014 22:53:09
Buenas tardes necesito ayuda con un ejercicio que me dieron en la facu.
Enunciado del problema
Mc Green S.A. es una casa de comidas saludables, posee una serie de combos, y según el día de la
semana presenta una serie de descuentos. Los combos disponibles son:
Combos Precio
01. 1 porción doble de pascualina + 1 agua saborizada de 500 ml $ 30
02. 1 triple de peceto + 1 agua mineral $ 35
03. 1 sándwich de vegetales + 1 jugo de manzana $ 40
Los miércoles se aplica un descuento del 50 % para mesas de mujeres (M), los lunes y jueves la
promoción es para mesas de parejas (P) y el descuento es del 30 %, (O) otros. El resto de los días, no
hay promoción.
El operador ingresará los siguientes datos: Número de Pedido, día de la semana, Número de combo,
cantidad, tipo de mesa (que puede ser “M”-Mujeres, “P”-Parejas).
Se requiere una aplicación que calcule el monto total recaudado de todos los pedidos ingresados.
Además se precisa detectar la cantidad de pedidos de Combo 3 y el porcentaje que representa sobre el
total de pedidos.
El fin de datos está dado por Número de pedido = 0.
Consideraciones:
El cálculo del porcentaje de descuento deberá realizarse utilizando una función.
La visualización de resultados deberá realizarse a través de un procedimiento.
a) Escribir un programa en Pascal que implemente el algoritmo que obtenga la información requerida.
b) Realizar luego la comprobación del programa creando un lote de datos que contemple todas las
posibles alternativas del problema en cuestión
Yo hasta el momento no pase anda a procedimiento y funcion, lo hice en el programa principal para despues copiarlo.
program TP1;
uses crt;
var
ve_nropedido:integer;
ve_dia:string;
ve_combo:integer;
ve_cantidad:integer;
ve_tipomesa:string;
va_descuento:real;
va_subtotal:real;
va_total:real;
va_recaudacion:real;
va_porcentaje:real;
BEGIN
ve_nropedido:= 1;
WHILE ve_nropedido <> 0 DO
BEGIN
writeln('Ingrese el dia de la semana: ');
readln(ve_dia);
writeln('Ingrese el combo: ');
readln(ve_combo);
IF ve_combo = 01 THEN
BEGIN
ve_combo:= 30;
END
ELSE
BEGIN
IF ve_combo = 02 THEN
BEGIN
ve_combo:= 35;
END
ELSE
BEGIN
IF ve_combo = 03 THEN
BEGIN
ve_combo:= 40;
END
END
END;
writeln('Ingrese la cantidad: ');
readln(ve_cantidad);
writeln('Ingrese Tipo de mesa: ');
readln(ve_tipomesa);
va_subtotal:= ve_combo*ve_cantidad;
IF ve_tipomesa = 'M' AND ve_dia = 'Miercoles' THEN
BEGIN
va_descuento:= va_subtotal / 100 * 50
END
ELSE
BEGIN
IF ve_tipomesa = 'P' AND ve_dia = 'lunes' or 'jueves' THEN
BEGIN
va_descuento:= va_subtotal / 100 * 30
END
ELSE
BEGIN
IF ve_tipomesa = 'N' THEN
BEGIN
va_descuento:= 0
END
END
END;
va_total:=va_subtotal - va_descuento;
writeln('El total es: ',va_total);
writeln('Ingrese numero de pedido: ');
readln(ve_nropedido);
END;
END.
Pero al compilar me da error en los AND y OR.
Si alguien me pudiese ayudar o en el mejor de los casos pasarme el codigo resuelto se lo agradeceria mucho
Enunciado del problema
Mc Green S.A. es una casa de comidas saludables, posee una serie de combos, y según el día de la
semana presenta una serie de descuentos. Los combos disponibles son:
Combos Precio
01. 1 porción doble de pascualina + 1 agua saborizada de 500 ml $ 30
02. 1 triple de peceto + 1 agua mineral $ 35
03. 1 sándwich de vegetales + 1 jugo de manzana $ 40
Los miércoles se aplica un descuento del 50 % para mesas de mujeres (M), los lunes y jueves la
promoción es para mesas de parejas (P) y el descuento es del 30 %, (O) otros. El resto de los días, no
hay promoción.
El operador ingresará los siguientes datos: Número de Pedido, día de la semana, Número de combo,
cantidad, tipo de mesa (que puede ser “M”-Mujeres, “P”-Parejas).
Se requiere una aplicación que calcule el monto total recaudado de todos los pedidos ingresados.
Además se precisa detectar la cantidad de pedidos de Combo 3 y el porcentaje que representa sobre el
total de pedidos.
El fin de datos está dado por Número de pedido = 0.
Consideraciones:
El cálculo del porcentaje de descuento deberá realizarse utilizando una función.
La visualización de resultados deberá realizarse a través de un procedimiento.
a) Escribir un programa en Pascal que implemente el algoritmo que obtenga la información requerida.
b) Realizar luego la comprobación del programa creando un lote de datos que contemple todas las
posibles alternativas del problema en cuestión
Yo hasta el momento no pase anda a procedimiento y funcion, lo hice en el programa principal para despues copiarlo.
program TP1;
uses crt;
var
ve_nropedido:integer;
ve_dia:string;
ve_combo:integer;
ve_cantidad:integer;
ve_tipomesa:string;
va_descuento:real;
va_subtotal:real;
va_total:real;
va_recaudacion:real;
va_porcentaje:real;
BEGIN
ve_nropedido:= 1;
WHILE ve_nropedido <> 0 DO
BEGIN
writeln('Ingrese el dia de la semana: ');
readln(ve_dia);
writeln('Ingrese el combo: ');
readln(ve_combo);
IF ve_combo = 01 THEN
BEGIN
ve_combo:= 30;
END
ELSE
BEGIN
IF ve_combo = 02 THEN
BEGIN
ve_combo:= 35;
END
ELSE
BEGIN
IF ve_combo = 03 THEN
BEGIN
ve_combo:= 40;
END
END
END;
writeln('Ingrese la cantidad: ');
readln(ve_cantidad);
writeln('Ingrese Tipo de mesa: ');
readln(ve_tipomesa);
va_subtotal:= ve_combo*ve_cantidad;
IF ve_tipomesa = 'M' AND ve_dia = 'Miercoles' THEN
BEGIN
va_descuento:= va_subtotal / 100 * 50
END
ELSE
BEGIN
IF ve_tipomesa = 'P' AND ve_dia = 'lunes' or 'jueves' THEN
BEGIN
va_descuento:= va_subtotal / 100 * 30
END
ELSE
BEGIN
IF ve_tipomesa = 'N' THEN
BEGIN
va_descuento:= 0
END
END
END;
va_total:=va_subtotal - va_descuento;
writeln('El total es: ',va_total);
writeln('Ingrese numero de pedido: ');
readln(ve_nropedido);
END;
END.
Pero al compilar me da error en los AND y OR.
Si alguien me pudiese ayudar o en el mejor de los casos pasarme el codigo resuelto se lo agradeceria mucho
Valora esta pregunta


0