s3Eva_IT2015_T4 Bomberos para incendios forestales

Ejercicios: 3Eva_IT2015_T4 Bomberos para incendios forestales

Propuesta de solución en Python:

Tarea: Desarrollar la opcion 3

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2015_T4 Bomberos para incendios forestales
import numpy as np

def grupobombero(registrados, m, local):
    n = len(registrados)
    filas = n//m
    if (n%m>0):
        filas = filas+1
    tabla = np.zeros(shape=(filas,m),dtype = int)
    # Solo bomberos de provincia local
    f = 0
    c = 0
    i = 0
    while not(i>=n):
        cual = registrados[i,1]
        quien = registrados[i,0]
        if (cual == local):
            tabla[f,c] = quien
            c = c+1
            if (c>=m):
                c = 0
                f = f + 1
        i = i + 1
    # los demas bomberos
    i = 0
    while not(i>=n):
        cual = registrados[i,1]
        quien = registrados[i,0]
        if not(cual == local):
            tabla[f,c] = quien
            c = c + 1
            if (c>=m):
                c = 0
                f = f + 1
        i = i + 1
    tabla = np.array(tabla)
    return(tabla)

# 3ra Evaluación I Término 2015
# Tema 4. Bomberos para incendios forestales
presentados = []
tabla  = np.zeros(shape=(1,2),dtype=int)
opcion = -1
i = 1
while not(opcion==6):
    print('1. Registrar bombero')
    print('2. Asignar grupos')
    print('3. Mostrar nombres de un grupo')
    print('4. Guardar datos')
    print('5. Leer datos')
    print('6. Salir')
    opcion = int(input(' opcion: '))

    if (opcion ==1):
        i = len(presentados) + 1
        print('voluntario: ',i)
        
        ced  = input('cedula: ')
        nom  = input('nombre: ')
        nbom = int(input('numero bombero: '))
        prv  = int(input('provincia: '))
        while not(prv>=1 and prv<=24):
            prv = int(input('provincia [1,24]: '))
            
        unbombero = {'cedula':ced,
                     'nombre': nom,
                     'nbombero':nbom,
                     'provincia':prv}
        presentados.append(unbombero)

    if (opcion==2):
        print('asigna grupos.....')
        m = int(input('cuantos grupos/incendios: '))
        local = int(input('ayudar a provincia: '))
        n = len(presentados)
        registrados =[]
        i = 0
        while not(i>=n):
            nbom = presentados[i]['nbombero']
            prv = presentados[i]['provincia']
            registrados.append([nbom,prv])
            i = i + 1
        tabla = grupobombero(registrados, m, local)
        print(tabla)
        
    if (opcion==3):
        print('....3. Mostrar nombres de un grupo')
        # Tarea por desarrollar
            
    if (opcion==4):
        narchivo = 'bomberos.txt'
        archivo = open(narchivo,'w')
        n = len(presentados)
        j =0
        while not(j>=n):
            ced = presentados[j]['cedula']
            nom = presentados[j]['nombre']
            nbom = presentados[j]['nbombero']
            prv = presentados[j]['provincia']
            linea = ced + ',' +nom + ',' + str(nbom) + ',' +str(prv) +'\n'
            archivo.write(linea)
            j = j+1
        archivo.close()
        print('.... registros guardados: ', n)
        
    if (opcion == 5):
        presentados = []
        narchivo = 'bomberos.txt'
        
        archivo = open(narchivo,'r')
        linea = archivo.readline()
        while not(linea==''):
            linea  = linea.strip('\n')
            partes = linea.split(',')
            ced  = partes[0]
            nom  = partes[1]
            nbom = int(partes[2])
            prv  = int(partes[3])
            
            unbombero = {'cedula':ced,
                         'nombre': nom,
                         'nbombero':nbom,
                         'provincia':prv}
            presentados.append(unbombero)
            linea = archivo.readline()

        n = len(presentados)
        print('.... registros leidos: ', n)
        archivo.close()

    if (opcion==6):
        print(' Saliendo del programa ....')
        print(' ccpg1001 Fundamentos de computación .....')