Algoritmo para el Cálculo de Beneficios Agrícolas en 10 Comarcas
Declaración de Constantes y Tipos
const
FIN = '#';
fconst
tipo
Tsumatotalbeneficiosporcultivo = tabla [1..26] de real;
ftipos
Declaración de Variables
var
Nombre_Comarca, Producto_Cultivado, Producto_Cultivado_Max, producto_maximo: carácter;
I, Numero_Identificacion_Finca, Numero_Fincas, Finca_Con_Mayor_Beneficio: entero;
Mayor_Beneficios_Fincas, Producto_Con_Mayor_Beneficio, Total_Beneficios_Comarca, Suma_Beneficios_Fincas, Beneficio_Producto, productototalmayorbeneficio: real;
Sumatotalbeneficiosporcultivo: Tsumatotalbeneficiosporcultivo;
FICHERO: text;
fvar
Inicialización de Variables
A := 1;
Productototalmayorbeneficio := 0,0;
Inicialización de la Tabla de Beneficios por Cultivo
Se inicializa la tabla Sumatotalbeneficiosporcultivo a 0 para cada uno de los 26 posibles cultivos.
mientras A <= 26 hacer
sumatotalbeneficiosporcultivo[A] := 0,0;
A := A + 1;
fmientras
Lectura y Procesamiento de Datos
A := 1;
Mayor_Beneficios_Fincas := 0,0;
Producto_Con_Mayor_Beneficio := 0,0;
Assign(fichero, "text.txt");
Reset(fichero);
mientras A <= 10 hacer
leer(fichero, Nombre_Comarca);
I := 1;
Total_Beneficios_Comarca := 0,0;
mientras (Nombre_Comarca) <> ' ' hacer
escribir(Nombre_Comarca);
leer(fichero, Nombre_Comarca);
fmientras
leer(fichero, Numero_Fincas);
Nota: Las siguientes líneas solo se pueden utilizar en Pascal.
mientras I <= (Numero_Fincas) hacer
Suma_Beneficios_Fincas := 0,0;
leer(fichero, Numero_Identificacion_Finca);
leer(fichero, Producto_Cultivado, Producto_Cultivado);
mientras (Producto_Cultivado) <> FIN hacer
leer(fichero, Beneficio_Producto);
SumaProductos[AEntero(Productos_Cultivado) - AEntero('A') + 1] := SumaProductos[AEntero(Productos_Cultivado - AEntero('A'))] + (Beneficio_Producto);
si (Beneficio_Producto) > (Producto_Con_Mayor_Beneficio) entonces
Producto_Con_Mayor_Beneficio := Beneficio_Producto;
Producto_Cultivado_Max := Producto_Cultivado;
fsi
Suma_Beneficios_Fincas := Beneficio_Producto + Suma_Beneficios_Fincas;
leer(fichero, Producto_Cultivado, Producto_Cultivado);
fmientras
I := I + 1;
Total_Beneficios_Comarca := (Suma_Beneficios_Fincas) + (Total_Beneficios_Comarca);
si (Suma_Beneficios_Fincas) > (Mayor_Beneficios_Fincas) entonces
Mayor_Beneficios_Fincas := (Suma_Beneficios_Fincas);
Finca_Con_Mayor_Beneficio := (Numero_Identificacion_Finca);
fsi
fmientras
A := A + 1;
escribir("El beneficio medio de la comarca es: ", Total_Beneficios_Comarca / numero_fincas);
fmientras
Cálculo del Producto con Mayor Beneficio
A := A + 1;
mientras A <= 26 hacer
si Sumaproductos[A] > ProductoTotalMayorBeneficio entonces
ProductoTotalmayorbeneficio := sumaproductos[A];
ProductoMaximo := ACaracter(A + AEntero 'A' - 1);
fsi
fmientras
Resultados
Se muestran los resultados obtenidos:
- Producto cultivado con mayor beneficio.
- Finca con mayor beneficio.
- Producto con mayor beneficio puntual.
escribir("El producto cultivado máximo es: ", Producto_Cultivado_Max, " con un valor de ", Producto_Con_Mayor_Beneficio:2:2);
escribir("La finca con mayor benficio es: ", Finca_Con_Mayor_Beneficio, " con un beneficio de ", Mayor_Beneficios_Fincas:2:2);
escribir("Producto de mayor beneficio puntual: ", ProductoMaximo, " con beneficio de ", ProductoTotalmayorbeneficio:2:2);
falgoritmo