Pascal/Turbo Pascal - Ejercicio con WHILE-IF-AND-OR, etc

 
Vista:
sin imagen de perfil

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ejercicio con WHILE-IF-AND-OR, etc

Publicado por Diego (98 intervenciones) el 18/05/2014 01:35:25
Buenas noches, primero que nada es recomendable que uses en parentesis para que se pueda apreciar el orden de las orperaciones, y esto a veces según sea la precendencia de los operadores(no me acuerdo bien si se le llama así) puede que no realize la operación de la manera en que esperas que se resuelva.
Lo otro es que pienso que sería mejor trabajarlo por días en vez de combos, preguntar en los dias de descuento el tipo de cliente(M - P). pero me quedó un duda en cuanto a (O) ya que dice que pueden ser M o P; aunque dice "pueden" y no dice "deben o sólo pueden", así que supongo que se debe tener en consideración a O(aunque no hay mucho que hacer con este cliente).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio con WHILE-IF-AND-OR, etc

Publicado por ramon (2158 intervenciones) el 19/05/2014 00:34:31
Mira tienes estos defectos en los if and se pone asi

IF (ve_tipomesa = 'M' ) AND (ve_dia = 'Miercoles' ) THEN
metido entre paréntesis cada comprobación que realiza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar