Pascal/Turbo Pascal - Ayuda Programa Pascal

   
Vista:

Ayuda Programa Pascal

Publicado por Juan Cruz (11 intervenciones) el 12/04/2013 06:02:47
Hola, como va?. Quería ver si me podían ayudar con el siguiente problema de pascal. Me estoy equivocando y no se en cual o cuales cosas... Se hace con iteración por condición y por cantidad. No se pueden usar funciones ni procedimientos. Ahí va:

Problema:




Hacer un programa que lea las ventas efectuadas por una farmacia. Por cada venta se ingresa un
código indicador (O, E ó T) y un importe.
Si el código es
- O, significa que corresponde a una obra social (se abona sólo en efectivo), le corresponde un 25% de
descuento.
- E, significa que se abona en efectivo, le corresponde un 10% de descuento.
- T, significa que se abona con tarjeta, le corresponde un 15% de recargo.
- * indica que finalizan las ventas
Se pide informar:
- Total de operaciones y total de montos en efectivo, discriminando cuáles fueron por obra social y
cuáles no
- Total de operaciones y montos por tarjeta.
- Total de operaciones y monto del día
NOTA : el total de montos debe ser el efectivamente cobrado luego de efectuar los descuentos o
recargos correspondientes.

Programa:




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Program Pr2Ej16;
Uses
Crt;
Var
O,E,T,Cod: Char;
Monto,AcumEf,AcumTarj,AcumObra,DescO,DescE,Rec: Real;
ContTotalOperaciones,ContTotOperEfect,ContTotObraSocial,ContOpTotTarjeta: Integer;
 
Begin
Clrscr;
Write('Ingrese el codigo correspondiente: ');
 Readln(Cod);
Write('Ingrese el monto: ');
 Readln(Monto);
ContTotalOperaciones:=0;
ContTotOperEfect:= 0;
ContTotObraSocial:=0;
ContOpTotTarjeta:= 0;
AcumEf:=0;
AcumTarj:=0;
AcumObra:=0;
 
While (Cod <> '*') do
              {TOTAL DE OPERACIONES TOTALES}
  If (Cod='O') or (Cod='E') or (Cod= 'T') then
   ContTotalOperaciones:= ContTotalOperaciones + 1;
 
              {TOTAL DE MONTOS EN EFECTIVO Y OBRA SOCIAL}
  If (Cod='E') then
   ContTotOperEfect:= ContTotOperEfect + 1
    else
     If (Cod='O') then
      ContTotObraSocial:= ContTotObraSocial + 1;
       If (Cod='E') then
        AcumEf:= AcumEf + Monto;
       If (Cod='O') then
        AcumObra:= AcumObra + Monto;
 
 
            {TOTAL OPERACIONES Y MONTOS POR TARJETA}
   If (Cod='T') then
    ContOpTotTarjeta:= ContOpTotTarjeta + 1;
   If (Cod='T') then
    AcumTarj:= AcumTarj + Monto;
 
            {TOTAL OPERACIONES Y MONTOS DEL DIA Y RECARGOS Y DESCUENTOS}
 
   If (Cod='O') then
    Monto:= Monto * 0.75
     else
   If (Cod='E') then
    Monto:= Monto * 0.90
     else
   If (Cod='T') then
    Monto := Monto * 1.15;
 
Writeln('Total de operaciones: ', ContTotalOperaciones);
Writeln('Total de montos en efectivo: $', AcumEf:8:2);
Writeln('Total operaciones en efectivo: ', ContTotOperEfect ,'Fueron por obra social: ',ContTotObraSocial);
Writeln('Total de operaciones con tarjeta: ',ContOpTotTarjeta);
Writeln('Total monto con tarjeta: ' , AcumTarj:8:2);
Writeln('Total monto del dia: ',AcumObra + AcumTarj + AcumEf:8:2);
Writeln('Total monto con obra social: ', AcumObra:8:2);
 Readln;
Write('Ingrese el codigo correspondiente');
 Readln(Cod);
Write('Ingrese el monto');
 Readln(Monto);
end.
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

Ayuda Programa Pascal

Publicado por ramon (2072 intervenciones) el 17/04/2013 19:20:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{Mira aquí lo tienes corregido prueba y mira los errores}
 
Program Pr2Ej16;
 Uses
    Crt;
  Var
    O, E, T, Cod : Char;
    Monto, AcumEf, AcumTarj, AcumObra, DescO, DescE,Rec : Real;
    ContTotalOperaciones, ContTotOperEfect, ContTotObraSocial,
                                              ContOpTotTarjeta : Integer;
 
  Begin
    Clrscr;
    ContTotalOperaciones := 0;
    ContTotOperEfect := 0;
    ContTotObraSocial := 0;
    ContOpTotTarjeta := 0;
    AcumEf := 0;
    AcumTarj := 0;
    AcumObra := 0;
 While (Cod <> '*') do
 begin
    Write('Ingrese el codigo correspondiente : ');
   repeat
    Cod := upcase(readkey);
   until cod in['O','E','T','*'];
   Writeln(cod);
   if cod <> '*' then
   begin
    Write('Ingrese el monto : ');
    Readln(Monto);
   end;
    {TOTAL DE OPERACIONES TOTALES}
      If (Cod = 'O') or (Cod = 'E') or (Cod = 'T') then
       ContTotalOperaciones := ContTotalOperaciones + 1;
    {TOTAL DE MONTOS EN EFECTIVO Y OBRA SOCIAL}
    If (Cod = 'E') then
    begin
      ContTotOperEfect := ContTotOperEfect + 1;
      AcumEf:= AcumEf + Monto;
      Monto := Monto * 0.90
    end;
     If (Cod = 'O') then
     begin
      ContTotObraSocial := ContTotObraSocial + 1;
      AcumObra := AcumObra + Monto;
      Monto:= Monto * 0.75
     end;
     {TOTAL OPERACIONES Y MONTOS POR TARJETA}
     If (Cod = 'T') then
     begin
      ContOpTotTarjeta:= ContOpTotTarjeta + 1;
      AcumTarj:= AcumTarj + Monto;
      Monto := Monto * 1.15;
     end;
  end;
   Writeln('Total de operaciones : ', ContTotalOperaciones);
   Writeln('Total de montos en efectivo : $',AcumEf:8:2);
   Writeln('Total operaciones en efectivo : ', ContTotOperEfect ,
                     '  Fueron por obra social : ',ContTotObraSocial);
   Writeln('Total de operaciones con tarjeta : ',ContOpTotTarjeta);
   Writeln('Total monto con tarjeta : ' , AcumTarj:8:2);
   Writeln('Total monto del dia : ',AcumObra + AcumTarj + AcumEf:8:2);
   Writeln('Total monto con obra social : ', AcumObra:8:2);
   readkey;
end.
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