Type Cantidad MaxInt Str60 String 60 Planta Record Nombre Str60 Tiempo

  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
Type
Cantidad = 0..MaxInt;
Str60 = String[60];
Planta = Record
Nombre: Str60;
TiempoProm: Cantidad;
TipoPlanta: Str60;
Clima: Str60;
Pais: Str60;
End;
Function Promedio(S, C: Integer): Real;
Begin
Promedio := S / C;
End;
Function Argentina(Pais: Str60; Clima: Str60): Boolean;
Begin
Argentina := (Pais = 'Argentina') And (Clima = 'Subtropical');
End;
Procedure MenorTipoPlanta(Tipo: Str60; CantTipo: Cantidad; Var MinTipo: Str60; Var MinCantTipo: Cantidad);
Begin
If (CantTipo < MinCantTipo) Then
Begin MinTipo := Tipo; MinCantTipo := CantTipo; End;
End;
Procedure MaxLong(Nombre: Str60; TiempoProm: Cantidad; Var MaxLong1, MaxLong2: Str60; Var MaxProm1, MaxProm2: Cantidad);
Begin
If (TiempoProm > MaxProm1) Then
Begin
MaxLong2 := MaxLong1;
MaxProm2 := MaxProm1;
MaxLong1 := Nombre;
MaxProm1 := TiempoProm;
End
Else
If (TiempoProm > MaxProm2) Then
Begin
MaxLong2 := Nombre;
MaxProm2 := TiempoProm;
End;
End;
Procedure MaxNombrePais(Pais: Str60; CantPais: Cantidad; Var MaxP: Str60; MaxCantP: Cantidad);
Begin
If (CantPais > MaxCantP) Then
Begin MaxP := Pais; MaxCantP := CantPais; End;
End;
Procedure Leer(Var P: Planta);
Begin
With P Do
Begin
Write('Pais: ');
ReadLn(Pais);
If (Pais <> 'zzz') Then
Begin
Write('Nombre: ');
ReadLn(Nombre);
Write('TiempoProm: ');
ReadLn(TiempoProm);
Write('TipoPlanta: ');
ReadLn(TipoPlanta);
Write('Clima: ');
ReadLn(Clima);
End;
End;
End;
Var
P: Planta;
MaxP, MinTipo, MaxLong1, MaxLong2: Str60;
i, Suma, CantTipo, CantNomP, CantPais, MaxProm1, MaxProm2, MaxCantP, MinCantTipo: Cantidad;
AuxTipoP, AuxPais, AuxNombre: Str60;
Begin
MaxP := ''; MaxLong1 := ''; MaxLong2 := '';
MinCantTipo := 32767; MaxProm1 := 0; MaxProm2 := 0; MaxCantP := 0; Suma := 0;
Leer(P);
For i := 1 to 2 Do
Begin
AuxTipoP := P.TipoPlanta;
CantTipo := 0;
While (AuxTipoP = P.TipoPlanta) Do
Begin
AuxNombre := P.Nombre;
CantNomP := 0;
While (AuxTipoP = P.TipoPlanta) And (AuxNombre = P.Nombre) Do
Begin
AuxPais := P.Pais;
CantPais := 0;
CantNomP := CantNomP + 1;
While (AuxTipoP = P.TipoPlanta) And (AuxNombre = P.Nombre) And (AuxPais <> 'zzz') Do
Begin
CantTipo := CantTipo + 1;
CantPais := CantPais + 1;
Suma := Suma + P.TiempoProm;
MaxLong(AuxNombre, P.TiempoProm, MaxLong1, MaxLong2, MaxProm1, MaxProm2);
If (Argentina(AuxPais, P.Clima)) Then WriteLn(P.Nombre);
Leer(P);
End;
P.Pais := '';
End;
MaxNombrePais(AuxPais, CantPais, MaxP, MaxCantP);
End;
MenorTipoPlanta(AuxTipoP, CantTipo, MinTipo, MinCantTipo);
WriteLn(Promedio(Suma, CantTipo));
End;
WriteLn(MinTipo);
WriteLn(MaxLong1, MaxLong2);
WriteLn(MaxP);
End.