Pascal/Turbo Pascal - Corte de control

 
Vista:

Corte de control

Publicado por psss (1 intervención) el 31/07/2007 21:58:18
Una empresa dedicada a la recolección de fruta dispone de un archivo que contiene entre otros campos:
Grupo de trabajo, numero de recolector, kilos de fruta, está ordenado por grupo de trabajo y dentro de grupo de trabajo por numero de recolector.
Determinar e imprimir:
1- total de kilos de fruta por recolector, por grupo de trabajo y por toda la empresa.
2- promedio de frutas recolectadas por grupo de trabajo. (total empresa / cant de grupos)
El ultimo registro contiene 99 en grupo de trabajo y no se procesa.

PROGRAM CORTE1;
USES
CRT;
VAR
CG, GT, NR, GA, RA: INTEGER;
KF, AR, AGT, AG, PRO: REAL;
BEGIN
GT:=1;
AG:=0;
AGT:=0;
CG:=0;
AR:=0;
WHILE GT <> 99 DO
BEGIN
CLRSCR;
GA:=GT;
RA:=NR;
AR:=AR+KF;
AGT:=AGT+KF;
AG:=AG+KF;
WRITE ('GRUPO: ');
READLN (GT);
WRITE ('RECOLECTOR: ');
READLN (NR);
WRITE ('KILOS: ');
READLN (KF);
IF GT<>GA THEN
BEGIN
CLRSCR;
WRITELN ('EL GRUPO ',GA, ' RECOLECTà ', AGT:6:2, ' KILOS DE FRUTA');
AGT:=0;
WRITELN ('EL RECOLECTOR NéMERO ', RA, ' RECOLECTà ',AR:6:2, ' KILOS DE FRUTA');
AR:=0;
CG:=CG+1;
READLN;
END
ELSE
BEGIN
IF NR<>RA THEN
BEGIN
CLRSCR;
WRITELN ('EL RECOLECTOR NéMERO ', RA, ' RECOLECTà ',AR:6:2, ' KILOS DE FRUTA');
AR:=0;
READLN;
END;
END;
END;
CG:=CG+1;
PRO:=AG/CG;
CLRSCR;
WRITELN ('EL GRUPO ',GA, ' RECOLECTà ', AGT:6:2, ' KILOS DE FRUTA');
WRITELN ('EL RECOLECTOR NéMERO ', RA, ' RECOLECTà ',AR:6:2, ' KILOS DE FRUTA');
WRITELN ('PROMEDIO DE FRUTAS RECOLECTADAS POR GRUPO DE TRABAJO: ',PRO:6:2);
READLN;
END.



obviamente esta porqueria está mal, si alguien sabe que es lo que tengo que corregir le agradecería.

Saludos!
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

RE:Corte de control

Publicado por Diego Romero (996 intervenciones) el 01/08/2007 01:57:15
Me encantó tu sinceridad xD.

Bueno, el enunciado dice que los datos están en un archivo, eso quiere decir que no los tienes que pedir por teclado. Además te da los campos que contiene cada registro del archivo y el significado su contenido.

Partiendo de esto lo que deberías hacer es:

Declarar unos sumadores.
Abrir el archivo.
Hacer un ciclo de lectura del archivo hasta encontrar un registro cuyo campo "grupo_trabajo" valga 99.
En ese ciclo haz las sumatorias correspondientes.

Lo que no me queda claro es qué estructura de datos te está permitido usar para los sumadores de grupos de trabajo y recolectores puesto que como no sabes de antemano cuántos hay de cada uno no sería posible usar un array, por lo que hay que recurrir a una lista dinámica. Aclárame esto y seguimos.
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

RE:Corte de control

Publicado por psss (1 intervención) el 02/08/2007 08:37:56
Los datos se ingresan por teclado, no se sacan de ningun archivo, cuando se ingresa el nro 99 termina el prg.

Para saber cuantos grupos hay uso un contador de grupos cada vez que hay "corte" por grupo.

No se usa ningun array ni nada, o sea las variables que necesito son esas que declaré.

Saludos!!
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

RE:Corte de control

Publicado por Diego Romero (996 intervenciones) el 02/08/2007 23:01:23
Ah, de allí que estén ordenados, bien.

entonces me parece que lo ideal es poner la carga de datos en un ciclo while, algo así:

GrupoAnt:=0;
RecolectorAnt:=0;
PedirGrupo;
while (GrupoIngresado <> 99) do
begin
PedirRecolector;
if (GrupoIngresado <> GrupoAnt) then
begin
MostrarResultadosDelGrupo;
PonerACeroLosSumadoresDeGrupoYRecolector
end;
PedirRecolector;
if (RecolectorIngresado <> RecolectorAnt) then
begin
MostrarResultadosRecolector;
PonerACeroSumadoresDeRecolector;
end;
SumarGrupo;
SumarRecolector;
PedirGrupo;
end; { while }

Ese sería el pseudocódigo.
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

RE:Corte de control

Publicado por psss (1 intervención) el 14/08/2007 08:41:24
Ya está, en realidad me dijeron q use labels (rotulos)..

Ahi pongo la solucion..

PROGRAM CORTE1;
USES
CRT;
LABEL
10, 20, 30;
VAR
PRO, AR, AGT, AG, KF:REAL;
CG, NR, GT, GA, RA:INTEGER;
BEGIN
CLRSCR;
WRITE ('Grupo de trabajo: ');
READLN (GT);
WRITE ('Numero de recolector: ');
READLN (NR);
WRITE ('Kilos de fruta: ');
READLN (KF);
10: GA:=GT;
20: RA:=NR;
30: AR:=AR+KF;
AGT:=AGT+KF;
AG:=AG+KF;
GT:=0;
CLRSCR;
WRITE ('Grupo de trabajo: ');
READLN (GT);
WHILE GT<>99 DO
BEGIN
WRITE ('Numero de recolector: ');
READLN (NR);
WRITE ('Kilos de fruta: ');
READLN (KF);
IF GT=GA THEN
IF NR=RA THEN
GOTO 30
ELSE
BEGIN
WRITELN ('Recolector: ', RA);
WRITELN ('Total recolectado: ',AR:6:2);
AR:=0;
READLN;
GOTO 20;
END
ELSE
BEGIN
WRITELN ('Grupo de trabajo: ', GA);
WRITELN ('Total recolectado: ', AGT:6:2);
AGT:=0;
WRITELN ('Recolector: ', RA);
WRITELN ('Total recolectado: ',AR:6:2);
AR:=0;
CG:=CG+1;
READLN;
GOTO 10;
END;
WRITE ('Grupo de trabajo: ');
READLN (GT);
END;
CLRSCR;
CG:=CG+1;
PRO:=AG/CG;
WRITELN ('Recolector: ', RA);
WRITELN ('Total recolectado: ', AR:6:2);
WRITELN ('Grupo de trabajo: ', GA);
WRITELN ('Total recolectado: ', AGT:6:2);
WRITELN ('Total recolectado empresa: ',AG:6:2);
WRITELN ('Promedio de frutas recolectadas por grupo de trabajo: ', PRO:6:2);
READLN;
END.


Ese es el codigo correcto.

Gracias, por la ayuda!
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

trabajo

Publicado por alex (1 intervención) el 03/08/2008 18:59:07
hola. Tengo una pequeña duda sobre turbo pascal como se puede crear un programa que desarrolle un polinomio como por ejemplo que ejecute la siguiente operación (x-2)*(X-4)*(x-6)*(x+6) y si no lo puede hacer como se podria hacer y como seria el procedimiento si saben como hacerlo por favor decirmelo como se hace.
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