Ejercicio: 3Eva2016TI_T2 sensar cultivos con dron
Propuesta de solución en Python:
literal a
generarplantacion(dimension). Se obtienen las dimensiones de la matriz plantación de los argumentos de la función. con lo que se crea la matriz con ceros.
n = dimension[0]
m = dimension[1]
plantacion = np.zeros(shape=(n,m),dtype=int)
Cada casilla de la matriz se llena con el resultado de la funciónsensarCultivos(posicion)
posicion = [i,j]
valor = sensarCultivos(posicion)
plantacion[i,j] = valor
Se añade el recorrido por cada fila y columna mediante bucles anidados y se integra a una función.
import numpy as np
def generarplantacion(dimension):
n = dimension[0]
m = dimension[1]
plantacion = np.zeros(shape=(n,m),dtype=int)
i = 0
while not(i>=n):
j = 0
while not(j>=m):
posicion = [i,j]
valor = sensarCultivos(posicion)
plantacion[i,j] = valor
j = j + 1
i = i + 1
return(plantacion)
literal b
analizarDensidad(plantacion, limite). Recibida la matriz plantación, se determina el tamaño n,m con lo que se crea la matriz para la densidad con ceros.
El algoritmo empieza comparando los valores de cada casilla con el límite. Si se supera el límite se actualiza la casilla densidad a 1.
if (plantacion[i,j]>=limite):
densidad[i,j]=1
fila.append('ALTO')
else:
fila.append('Bajo')
El equivalente con palabras se realiza mediante una lista con los valores 'ALTO' y 'Bajo' correspondiente en cada casilla.
Algoritmo en Python
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL
# 3Eva_IT2016_T2 sensar cultivos con dron
import numpy as np
import random as rnd
def sensarCultivos(posicion):
# Solo para generar una matriz que
# permita trabajar con el programa
valor = int(rnd.random()*10+1)
return(valor)
# literal a
def generarplantacion(dimension):
n = dimension[0]
m = dimension[1]
plantacion = np.zeros(shape=(n,m),dtype=int)
i = 0
while not(i>=n):
j = 0
while not(j>=m):
posicion = [i,j]
valor = sensarCultivos(posicion)
plantacion[i,j] = valor
j = j + 1
i = i + 1
return(plantacion)
# literal b
# usa matriz densidad de 1 y 0 para facilitar
# el cálculo del literal c
def analizarDensidad(plantacion, limite):
tamano = np.shape(plantacion)
n = tamano[0]
m = tamano[1]
densidad = np.zeros(shape=(n,m),dtype=int)
resultado = []
i = 0
while not(i>=n):
fila = []
j = 0
while not(j>=m):
if (plantacion[i,j]>=limite):
densidad[i,j]=1
fila.append('ALTO')
else:
fila.append('Bajo')
j = j + 1
resultado.append(fila)
i = i + 1
return(densidad)
# literal c
def reporteCrecimento(plantacion,densidad):
tamano = np.shape(plantacion)
n = tamano[0]
m = tamano[1]
casillas = n*m
sumaALTO = 0
sumaBAJO = 0
i = 0
while not(i>=n):
j = 0
while not(j>=m):
valor = plantacion[i,j]
if (densidad[i,j]==1):
sumaALTO = sumaALTO + valor
else:
sumaBAJO = sumaBAJO + valor
j = j + 1
i = i + 1
prmALTO = sumaALTO/(np.sum(densidad))
prmBAJO = sumaBAJO/(n*m-np.sum(densidad))
promedio = [prmALTO,prmBAJO]
return(promedio)
crear un archivo de funciones para importar si las funciones se crean en otro archivo.
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL
import dronescultivos as dron
# PROGRAMA
# INGRESO , usa datos aleatorios como prueba
dimension = (3,4)
plantacion = dron.generarplantacion(dimension)
#PROCEDIMIENTO
limite = 4
densidad = dron.analizarDensidad(plantacion, limite)
reporte = dron.reporteCrecimento(plantacion,densidad)
#SALIDA
print(plantacion)
print(densidad)
print(reporte)