Pascal/Turbo Pascal - problema de algoritmo urgente por resolver

   
Vista:

problema de algoritmo urgente por resolver

Publicado por jennyree mata jennyreemata19@gmail.com (1 intervención) el 15/10/2012 22:28:21
hola buenas tardes a todos, disculpen la molestia, necesito resolver un algoritmo en español usando la estructura: estructural y modulado no secuencial... ya yo intente resolverlo pero no estoy segura de que este bien... este es el enunciado:

Una compañía paga a sus vendedores un sueldo fijo, mas una comision por venta. La compañía fabrica 3 tipos de productos y cada vendedor vende de los tres. Para calcular la comision considere lo siguiente:

a) Por el producto 1 recibe el 5% de comision, si el monto de la venta es menor a 100.000Bs. de lo contrario recibe el 6%.

b) por el producto 2 recibe el 7% de comisión, si el monto de la venta es mayor a 150.000bs.
c) por el producto 3 recibe el 8% de comisión, por cualquier monto de venta.

Diseñe un algoritmo que lea el sueldo fijo del vendedor, el monto de venta del producto 1,2 y3.

Calcular e imprima: la comisión por producto, la total comisión del vendedor y el sueldo total a recibir.

MODIFICACION
¿Qué pasaría si el vendedor sólo vende un tipo de producto. De esta manera los datos del vendedor serian: Sueldo fijo, Tipo de producto vendido, Monto vendido. Calcule e imprima la comisión y el sueldo total a recibir por el vendedor.

debo hacerlo de las dos formas ( la original y la modificacion) incluyendo su respectivo diagrama de flujo.... agradezco ayuda es urgenteeeeeee....
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

problema de algoritmo urgente por resolver

Publicado por ramon (2072 intervenciones) el 16/10/2012 17:55:19
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{Disculpa pero no comprendo muy bien lo que pides pero a ver si esto te ayuda}
 
program vendedores;
 uses
    crt;
  const
     ven1 = 5;
     ven1x1 = 6;
     ven2 = 7;
     ven3 = 8;
     maxven1 = 100.000;
     maxven2 = 150.000;
 
  type
     fichavendedor = record
            vendedor : string[80];
          sueldofijo : real;
            comision : array[1..3] of real;
            totalcomi : real;
            ventas   : array[1..3] of integer;
            total    : real;
          end;
 
   var
    fichas : array[1..10] of fichavendedor;
    n : integer;
 
 
   procedure presentaventas(d : integer);
   var
      k : integer;
   begin
      clrscr;
      gotoxy(2,2);write('Nombre                Sueldo     Art1  Art2  Art3   Comision       total');
      for k := 1 to d do
      begin
         gotoxy(2,2 + k);write(fichas[n].vendedor);
         gotoxy(24, 2 + k);write(fichas[n].sueldofijo:0:2);
        if fichas[n].ventas[1] > 0 then
        begin
         gotoxy(35,2 + k);write(fichas[n].ventas[1]);
        end;
         if fichas[n].ventas[2] > 0 then
         begin
         gotoxy(41,2 + k);write(fichas[n].ventas[2]);
         end;
         if fichas[n].ventas[3] > 0 then
         begin
         gotoxy(47,2 + k);write(fichas[n].ventas[3]);
         end;
         gotoxy(54, 2 + k);write(fichas[n].totalcomi:0:2);
         gotoxy(69, 2 + k);write(fichas[n].total:0:2);
         writeln;
      end;
        readln;
   end;
 
   procedure entradadatos;
   var
      fin : boolean;
      te, tt, salir : char;
      g, erro, v, canti : integer;
      vent : string[1];
   begin
      n := 1;
      fin := false;
      g := 1;
    repeat
        clrscr;
        writeln(' Entrada Datos De Vendedores ');
        write('  Nombre Vendedor : ');
        readln(fichas[n].vendedor);
        write('  Sueldo Fijo : ');
        readln(fichas[n].sueldofijo);
     repeat
        write('  Ventas Del Artuculo 1/2/3/0 : ');
      repeat
           tt := readkey;
      until tt in['1','2','3','0'];
      if tt > '0' then
      begin
        vent[1] := tt;
        vent[0] := chr(1);
        val(vent,v,erro);
        writeln;
        write('  Cantidad Ventas Del Articulo ',v,' : ');
        readln(canti);
        fichas[n].ventas[v] := canti;
        if v = 1 then
        begin
            if canti > maxven1 then
            fichas[n].comision[g] :=  canti * ven1x1 / 100
          else
            fichas[n].comision[g] :=  canti * ven1 / 100;
        end;
        if v = 2 then
        begin
            if canti > maxven2 then
            fichas[n].comision[g] :=  canti * ven2 / 100
          else
            fichas[n].comision[g] := 0.0;
        end;
        if v = 3 then
        begin
            fichas[n].comision[g] :=  canti * ven3 / 100;
        end;
        fichas[n].totalcomi := (fichas[n].comision[1] + fichas[n].comision[2] +
                      fichas[n].comision[3]);
     writeln;
 
     writeln('  Desea Ingresar Mas Ventas [S/N]');
     repeat
     te := upcase(readkey);
     until te in['S','N'];
     end
   else
     te := 'N';
     if te = 'S' then
     begin
     g := g + 1;
     if g > 3 then
     te := 'N';
     end;
     until te = 'N';
        fichas[n].total := (fichas[n].sueldofijo + fichas[n].totalcomi);
        writeln;
 
     repeat
        writeln('  Desea Continuar Entradas [S/N] ');
     salir := upcase(readkey);
     until salir in['S','N'];
     if salir = 'N' then
     fin := true
  else
     begin
     n := n + 1;
     g := 1;
     if n > 10 then
     fin := true;
     end;
    until fin = true;
    presentaventas(n);
  end;
 
 
 
  begin
     entradadatos;
  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