Pascal/Turbo Pascal - Ayuda pascal porfavor

   
Vista:

Ayuda pascal porfavor

Publicado por Erick (3 intervenciones) el 02/10/2011 01:26:26
Hola que tal gente, me dieron un problema que me esta quemando la cabeza hace una semana no lo puedo hacer, aver si me pueden ayudar un poco. Gracias desde ya

el problema es el siguiente, tengo que hacerlo usando Procedimientos no importa la cantidad

Una compañia paga a sus vendedores un sueldo basico mas comision. El vendedor recibe $200 por semana mas el 9% de sus ventas de la semana.

Los valores de los items vendidos son los siguiente :

item A valor: 239.99
item B valor: 128.75
item C valor: 99.95
item D valor: 350.89

El programa debe permitir ingresar para N (cierta cantidad) vendedores la lista de items vendidos en la ultima semana y debe calcular el sueldo que va a recibir cada uno, tambien se debe mostrar la cantidad de item vendidos por cada vendedor, cual fue el codigo del vendedor que vendio mas en dinero y el porcentaje de cada item entre todos los vendedores.

por ejemplo

Vendedor 1: vende $709.68 en una semana
sueldo de la semana 200$ mas el 9% de $709.68 = 63.87
total $263.87

detalle de item vendidos:

item cantidad valor

Item A 2 479.98
Item B 1 128.75
Item C 1 99.95
Total 709.68

Vendedor 2: vende $709.68 en una semana
sueldo de la semana $200 mas el 9% de 701.78 = $63.16
total $263.16

Item cantidad valor

Item 2 350.89
Total 701.78

El vendedor que mas vendio fue el vendedor 1

Porcentaje vendido

ITEM A 33.33%
ITEM B 16.66%
ITEM C 16.66%
ITEM D 33.33%
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

avanse

Publicado por erick (3 intervenciones) el 02/10/2011 20:39:43
hola gente, este es mi avanse , que de seguro tiene varios errores, pero aver si me pueden ayudar un poco, lo unico que no calculo es quien vende mas de los vendedores porque no se me ocurre como,de todas formas no creo que sea tan importante, muchas gracias desde ya

les tradusco las variables

cont=contador cant_v= cantidad de vendedores cod_v= codigo vendedor cont_d= contador de dias

cant_item= cantidad de items sueldo_t= sueldo total cant_item_v= cantidad de item vendidos

dinero= el total recaudado de los item vendidos

acumuladores de items para sacar porcentaje = pa, pb, pc, pd

porcentaje_a b c y d= para calcular y mostrar el porcentaje de items vendidos

nom_item= nombre item cont_a, cont_b, cont_c, cont_d = contadores de cada item


Program Erick;
Var
cont, cant_v, cod_v, cont_d, cant_item, sueldo_t, cant_item_v, dinero,
pa, pb, pc, pd, porcentaje_a, porcentaje_b, porcentaje_c, porcentaje_d:real;

Begin

cont:= 0;
while (cont <= cant_v) do

Begin

cont_d:= 0;
Writeln ('ingrese codigo del vendedor');
readln (cod_v);

while (cont_d <= 7) do
begin

Procedure calcular_sueldo; ( cant_item, sueldo, cont_a, cont_b, cont_c,
cont_d:real nom_item:string);

Begin
Writeln ('ingrese la cantidad de items');
readln (cant_item);

while (cant_item = 0) do

Begin
cont_a:= 0;
cont_b:= 0;
cont_c:= 0;
cont_d:= 0;
Writeln ('ingrese nombre del item');
readln (nom_item);

If (nom_item = A) then
Sueldo:= sueldo + 239.99;
cont_a:= cont_a + 1;

if (nom_item = B) or (nom_item = C) or (nom_item = D) then

if (nom_item = B) then
sueldo:= sueldo + 129.75;
cont_b := cont_b + 1;

If (nom_item= C) or (nom_item= D) then
If (nom_item= C) thein
sueldo:= sueldo + 99.95;
cont_c:= cont_c + 1;

If (nom_item = D) then
sueldo:= sueldo + 350.89;
cont_d:= cont_d + 1;

end;
cont_item:= cont_item - 1;
end;
begin
calcular_sueldo
end;

sueldo_t:= (sueldo + 9)/100)+200;
cant_item_v:= (cont_a + cont_b + cont_c + cont_d);
dinero := sueldo;
Writeln ('el vendedor', cod_v);
writeln ('vendio en total', dinero);
writeln ('su sueldo total es', sueldo_t);
writeln ('cantidad de items A que vendio',cont_a);
writeln ('cantidad de items B que vendio',cont_b);
writeln ('cantidad de items C que vendio',cont_c);
writeln ('cantidad de items D que vendio',cont_d);
pa:=pa+cont_a;
pb:=pb+cont_b;
pc:=pc+cont_c;
pd:=pd+cont_d;
end;
Porcentaje_A:= (Pa*100)/cant_item;
Porcentaje_B:= (pb*100)/cant_item;
Porcentaje_C:= (pc*100)/cant_item;
Porcentaje_D:= (pd*100)/cant_item;
writeln ('Porcentaje vendido de items A');
writeln ('Porecntaje vendido de items B');
writeln ('porcentaje vendido de items C');
writeln ('porcentaje vendido de items D');
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

Avanse 2

Publicado por Erick (3 intervenciones) el 04/10/2011 14:55:45
Bueno aca agregue mas procedimientos y corregi algunos errores, pero ahora me esta saltando el error "error in statement" en el segundo procedimiento. Alguna solucion?.gracias

Program Practico_evaluativo_Erick_Calderon;
var
cont, cant_v, cont_d, num_item, cant_item:real;

Procedure calcular_sueldo (cant_item, num_item:real;
var sueldo, cont_a, cont_b, cont_c, cont_d:real);

BEGIN

while (cant_item >= 0) do

BEGIN

If (num_item = 1) then
begin
sueldo:= sueldo + 239.99;
cont_a:= cont_a + 1;
end;

if (num_item = 2) or (num_item = 3) or (num_item =4) then

if (num_item = 2) then
begin
sueldo:= sueldo + 129.75;
cont_b := cont_b + 1;
end;

If (num_item= 3) or (num_item= 4 ) then

If (num_item= 3 ) then
begin
sueldo:= sueldo + 99.95;
cont_c:= cont_c + 1;
end;

If (num_item = 4) then
Begin
sueldo:= sueldo + 350.89;
cont_d:= cont_d + 1;
end;

cant_item:= cant_item - 1;

END;

Procedure calcular_sueldo_total (sueldo, cant_a, cant_b, cant_c, cant_d, cod_v:real;
var sueldo_t, cant_item_v, dinero, aux, aux2:real);

BEGIN

Sueldo_t:= ((sueldo * 9)/100)+200;

cant_item_v:= (cant_a + cant_b + cant_c + cant_d);

dinero:= sueldo;

aux:= dinero;

If (dinero > aux) then
begin
aux:= dinero;
aux2:= cod_v;
end;
END;


Program Mostrar (cod_v, dinero, sueldo_t, cant_a, cant_b, cant_c, cant_d:real;
var pa, pb, pc, pd:real);

BEGIN

writeln ('El vendedor con el codigo: ', cod_v:5:0);
writeln ('Dinero recadudado de los items: ', dinero:5:0);
writeln ('Su sueldo total: ', sueldo_t:5:0);
writeln ('Cantidad de items A que vendio: ', cant_a:5:0);
writeln ('Cantidad de items B que vendio: ', cant_b:5:0);
writeln ('Cantidad de items C que vendio: ', cant_c:5:0);
writeln ('Cantidad de items D que vendio: ', cant_d:5:0);

pa:= pa + cant_a;
pb:= pb + cant_b;
pc:= pc + cant_c;
pd:= pd + cant_d;

END;

Procedure Mostrar_Porcentajes (pa, pb, pc, pd, cant_item,
porcentaje_a, porcentaje_b,
porcentaje_c, porcentaje_d:real);

BEGIN

Porcentaje_a:= ((pa * 100)/cant_item);
Porcentaje_b:= ((pb * 100)/cant_item);
Porcentaje_c:= ((pc * 100)/cant_item);
Porcentaje_d:= ((pd * 100)/cant_item);

writeln ('porcentaje vendido de items A: ', porcentaje_a:5:0);
writeln ('porcentaje vendido de items B: ', porcentaje_b:5:0);
writeln ('porcentaje vendido de items C: ', porcentaje_c:5:0);
writeln ('porcentaje vendido de items D: ', porcentaje_d:5:0);

END;



BEGIN {Programa principal}

writeln ('Ingrese cantidad de vendedores');
readln (cant_v);
cont:= 0

While (cont <= cant_v) do

BEGIN

cont_d:= 1;
writeln ('Ingrese codigo del vendedor');
realdn (cod_v);

While (cont_d = 7) do

BEGIN

writeln ('Ingrese cantidad de items');
realdn (cant_item);

writeln ('Ingrese numero de item');
realdn (num_item)

calcular_sueldo (cant_item1, num_item1, sueldo1, cant_a1,
cant_b1, cant_c1, cant_d1:real);

cont_d:= cont_d + 1;


calcular_sueldo_total (sueldo, cant_a, cant_b, cant_c, cant_d,
cod_v,Sueldo_t, cant_item_v, dinero, aux, aux2);

Mostrar (cod_v, dinero, sueldo_t, cant_a, cant_b, cant_c,
cant_d, pa, pb, pc, pd);
cant_v:= cant_v - 1;

END;

Mostrar_porcentajes (pa, pb, pc, pd, cant_item,
porcentaje_a, porcentaje_b,
porcentaje_c, porcentaje_d:real);



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

Avanse 2

Publicado por ramon (2072 intervenciones) el 08/10/2011 14:41:51
{Esto te puede ir sirviendo si es asín intentare terminar lo}



program Erick;
uses
crt;
const
item : array['a'..'d'] of real = (
239.99, 128.75, 99.95, 350.89);
type
vendedor = record
numero : integer;
itemve : array[1..4] of char;
salario : real;
tantov : real;
total : real;
end;


var
vende : array[1..7] of vendedor;
vend, cont : integer;

procedure entradasventas(ven : integer);
var
i, paso : integer;
tecla : char;
begin
if ven > 7 then
begin
end
else
begin
gotoxy(10,5);write('Numero Vendedor : ');
gotoxy(28,5);readln(vende[ven].numero);
paso := 1;
repeat
gotoxy(10,6);write('Item Vendido : ','Letras [A/B/C/D]');
gotoxy(25,6);readln(vende[ven].itemve[paso]);
repeat
gotoxy(10,20);write('Entra Mas Ventas [S/N]');
tecla := readkey;
until tecla in['s','S','n','N'];
if tecla in['s','S'] then
begin
paso := paso + 1;
gotoxy(10,6);clreol;
gotoxy(10,20);clreol;
end;
until (tecla in['n','N']) or (paso > 4);
end;
vende[ven].tantov := 0;
for i := 1 to paso do
begin
vende[ven].tantov := vende[ven].tantov + (item[vende[ven].itemve[i]] *
9 / 100);
end;
vende[ven].salario := 200;
vende[ven].total := vende[ven].salario + vende[ven].tantov;
clrscr;
end;

procedure presentaventas;
var
t,h : integer;
begin
for t := 1 to vend do
begin
writeln(' N§ Vendedor : ',vende[t].numero);
for h := 1 to 4 do
begin
if vende[t].itemve[h] > ' ' then
writeln('Iten Vendido : ',vende[t].itemve[h]);
end;
writeln('Tanto por % : ',vende[t].tantov:8:2);
writeln('Salario : ',vende[t].salario:8:2);
writeln('Total Semana : ',vende[t].total:8:2);
end;
end;



begin
clrscr;
vend := 1;
entradasventas(vend);
presentaventas;
readln;
end.

{faltaría las otras operaciones que marcas y el menú para todo}
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