
maximos de una matriz
Publicado por Facundo (1 intervención) el 18/11/2013 20:00:53
Buenas estoy tratando de resolver el siguiente ejercicio y no consigo resolver el punto e) del siguiente enunciado
Un supermercado con 10 sucursales de 30 caja cada una procesa constantemente la informacion del monto recaudado por cada caja. La información ingresa del siguiente modo: sucursal (entero de 1 a 10), caja (entero de 1 a 30) y pesos facturados(real con 2 decimales)
a)Ingresr datos
b)imprimir los datos en forma matricial
c) ordenar por sucursal S ingresada por teclado de mayor a menor según monto facturado
d) ordenar por caja c ingresada por teclado de mayor a menor según monto facturado
e) listar sucursal-caja-facturacion para los n (ingresados por teclado) mayores montos recaudados
entiendo que lo que pide el último punto seria determinar los montos mayores identificando de que caja y sucursal vienen y mostrar esa informacion, pero aún no logro expresar esto.
Esto es lo que pude hacer por el momento
PROGRAM B6;
USES CRT;
TYPE
MATRIZ= ARRAY[1..3, 1..3] OF REAL;
VECTOR1= ARRAY[1..3] OF REAL;
VECTOR2= ARRAY[1..3] OF REAL;
VAR
RECAUDACION: MATRIZ;
VCAJAS,MONTOTOTC:VECTOR1;
MONTOTOT,VSUC: VECTOR2;
VRECAUDACION: VECTOR3;
ULTIMO: STRING;
SUC,CAJA,I,J: INTEGER;
AUX,MONTO: REAL;
BEGIN
FOR I:=1 TO 3 DO
FOR J:=1 TO 3 DO
BEGIN
RECAUDACION[I,J]:=0;
END;
WHILE ULTIMO<>'SI' DO
BEGIN
WRITELN('INGRESE NRO DE SUCURSAL (1 A 3)'); READLN(SUC);
WRITELN('INGRESE CAJA(1 A 3)'); READLN(CAJA);
WRITELN('INGRESE MONTO DE LA FACTURA'); READLN(MONTO);
RECAUDACION[CAJA,SUC]:=RECAUDACION[CAJA,SUC]+MONTO;
WRITELN('TERMINO DE INGRESAR LOS DATOS TECLEE SI+INTRO'); READLN(ULTIMO);
END;
FOR CAJA:=1 TO 3 DO
VCAJAS[CAJA]:=0;
FOR CAJA:=1 TO 3 DO
FOR SUC:=1 TO 3 DO
BEGIN
VCAJAS[CAJA]:=VCAJAS[CAJA]+RECAUDACION[CAJA,SUC];
END;
FOR CAJA:=1 TO 3 DO
FOR SUC:=1 TO 3 DO
BEGIN
WRITELN('LA CAJA ', CAJA,' DE LA SUCURSAL ',SUC ,'RECAUDO ',RECAUDACION[CAJA,SUC]);
END;
FOR SUC:=1 TO 3 DO
VSUC[SUC]:= SUC;
FOR SUC:=1 TO 3 DO
FOR CAJA:=1 TO 3 DO
MONTOTOT[SUC]:= MONTOTOT[SUC]+RECAUDACION[CAJA,SUC];
FOR I:=1 TO 2 DO
FOR J:=I+1 TO 3 DO
IF MONTOTOT[I]<MONTOTOT[J] THEN
BEGIN
AUX:=VSUC[I];
VSUC[I]:=VSUC[J];
VSUC[J]:=AUX;
AUX:=MONTOTOT[I];
MONTOTOT[I]:=MONTOTOT[J];
MONTOTOT[J]:=AUX;
END;
WRITELN('LA SUCURSAL DE MAYOR A MENOR POR FACTURACION');
FOR SUC:=1 TO 3 DO
WRITELN('LA SUCURSA ', VSUC[SUC],'FACTURO ',MONTOTOT[SUC]);
FOR CAJA:=1 TO 3 DO
VCAJAS[CAJA]:= CAJA;
FOR CAJA:=1 TO 3 DO
FOR SUC:=1 TO 3 DO
MONTOTOTC[CAJA]:= MONTOTOTC[CAJA]+ RECAUDACION[CAJA,SUC];
FOR I:=1 TO 2 DO
FOR J:=I+1 TO 3 DO
IF MONTOTOTC[I]<MONTOTOTC[J] THEN
BEGIN
AUX:=VCAJAS[I];
VCAJAS[I]:=VCAJAS[J];
VCAJAS[J]:=AUX;
AUX:=MONTOTOTC[I];
MONTOTOTC[I]:=MONTOTOTC[J];
MONTOTOTC[J]:=AUX;
END;
WRITELN('LA CAJA DE MAYOR A MENOR POR FACTURACION:');
FOR CAJA:=1 TO 3 DO
WRITELN('LA CAJA ', VCAJAS[CAJA],'FACTURO ', MONTOTOTC[CAJA]);
READKEY;
END.
Un supermercado con 10 sucursales de 30 caja cada una procesa constantemente la informacion del monto recaudado por cada caja. La información ingresa del siguiente modo: sucursal (entero de 1 a 10), caja (entero de 1 a 30) y pesos facturados(real con 2 decimales)
a)Ingresr datos
b)imprimir los datos en forma matricial
c) ordenar por sucursal S ingresada por teclado de mayor a menor según monto facturado
d) ordenar por caja c ingresada por teclado de mayor a menor según monto facturado
e) listar sucursal-caja-facturacion para los n (ingresados por teclado) mayores montos recaudados
entiendo que lo que pide el último punto seria determinar los montos mayores identificando de que caja y sucursal vienen y mostrar esa informacion, pero aún no logro expresar esto.
Esto es lo que pude hacer por el momento
PROGRAM B6;
USES CRT;
TYPE
MATRIZ= ARRAY[1..3, 1..3] OF REAL;
VECTOR1= ARRAY[1..3] OF REAL;
VECTOR2= ARRAY[1..3] OF REAL;
VAR
RECAUDACION: MATRIZ;
VCAJAS,MONTOTOTC:VECTOR1;
MONTOTOT,VSUC: VECTOR2;
VRECAUDACION: VECTOR3;
ULTIMO: STRING;
SUC,CAJA,I,J: INTEGER;
AUX,MONTO: REAL;
BEGIN
FOR I:=1 TO 3 DO
FOR J:=1 TO 3 DO
BEGIN
RECAUDACION[I,J]:=0;
END;
WHILE ULTIMO<>'SI' DO
BEGIN
WRITELN('INGRESE NRO DE SUCURSAL (1 A 3)'); READLN(SUC);
WRITELN('INGRESE CAJA(1 A 3)'); READLN(CAJA);
WRITELN('INGRESE MONTO DE LA FACTURA'); READLN(MONTO);
RECAUDACION[CAJA,SUC]:=RECAUDACION[CAJA,SUC]+MONTO;
WRITELN('TERMINO DE INGRESAR LOS DATOS TECLEE SI+INTRO'); READLN(ULTIMO);
END;
FOR CAJA:=1 TO 3 DO
VCAJAS[CAJA]:=0;
FOR CAJA:=1 TO 3 DO
FOR SUC:=1 TO 3 DO
BEGIN
VCAJAS[CAJA]:=VCAJAS[CAJA]+RECAUDACION[CAJA,SUC];
END;
FOR CAJA:=1 TO 3 DO
FOR SUC:=1 TO 3 DO
BEGIN
WRITELN('LA CAJA ', CAJA,' DE LA SUCURSAL ',SUC ,'RECAUDO ',RECAUDACION[CAJA,SUC]);
END;
FOR SUC:=1 TO 3 DO
VSUC[SUC]:= SUC;
FOR SUC:=1 TO 3 DO
FOR CAJA:=1 TO 3 DO
MONTOTOT[SUC]:= MONTOTOT[SUC]+RECAUDACION[CAJA,SUC];
FOR I:=1 TO 2 DO
FOR J:=I+1 TO 3 DO
IF MONTOTOT[I]<MONTOTOT[J] THEN
BEGIN
AUX:=VSUC[I];
VSUC[I]:=VSUC[J];
VSUC[J]:=AUX;
AUX:=MONTOTOT[I];
MONTOTOT[I]:=MONTOTOT[J];
MONTOTOT[J]:=AUX;
END;
WRITELN('LA SUCURSAL DE MAYOR A MENOR POR FACTURACION');
FOR SUC:=1 TO 3 DO
WRITELN('LA SUCURSA ', VSUC[SUC],'FACTURO ',MONTOTOT[SUC]);
FOR CAJA:=1 TO 3 DO
VCAJAS[CAJA]:= CAJA;
FOR CAJA:=1 TO 3 DO
FOR SUC:=1 TO 3 DO
MONTOTOTC[CAJA]:= MONTOTOTC[CAJA]+ RECAUDACION[CAJA,SUC];
FOR I:=1 TO 2 DO
FOR J:=I+1 TO 3 DO
IF MONTOTOTC[I]<MONTOTOTC[J] THEN
BEGIN
AUX:=VCAJAS[I];
VCAJAS[I]:=VCAJAS[J];
VCAJAS[J]:=AUX;
AUX:=MONTOTOTC[I];
MONTOTOTC[I]:=MONTOTOTC[J];
MONTOTOTC[J]:=AUX;
END;
WRITELN('LA CAJA DE MAYOR A MENOR POR FACTURACION:');
FOR CAJA:=1 TO 3 DO
WRITELN('LA CAJA ', VCAJAS[CAJA],'FACTURO ', MONTOTOTC[CAJA]);
READKEY;
END.
Valora esta pregunta


0