s3Eva_IT2003_T2 Verificar un cuadrado mágico

Ejercicio: 3Eva_IT2003_T2 Verificar un cuadrado mágico

Propuesta de solución en Python: py_pdf, también se incluye versión en matlab: m_pdf

El problema se separa en sus partes principales.

Primero se revisa el número de veces que aparece cada número en el cuadrado. Luego se suma cada fila y columna, guardando los resultados en vectores.

La suma de las diagonales se las hace aparte pues solo se necesita mover un índice; la diagonal principal tiene el mismo índice en la fila y columna; y la diagonal segundaria, en cambio la columna es decreciente.

Se validan los resultados parciales con las condiciones para que sea mágico y se muestra el resultado.

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2003_T2 Verificar un cuadrado mágico
# Propuesta: edelros@espol.edu.ec

import numpy as np

# INGRESO
n = int(input("tamaño cuadrado: "))

while (n>10):
    n = int(input("tamaño cuadrado(n<10): "))

cuadrado = np.zeros(shape=(n,n),dtype=int)
for i in range(0,n,1):
    for j in range(0,n,1):
        cuadrado[i,j] = input("cuadrado ["+str(i+1)+","+str(j+1)+"]: ")

# PROCEDIMIENTO
# verifica numeros repetidos
m = n*n
repetido = np.zeros(m+1,dtype=int)
masdeuno = 0
for i in range(0,n,1):
    for j in range(0,n,1):
        k = cuadrado[i,j]
        repetido[k]=repetido[k]+1
        if (repetido[k]>1):
            masdeuno = k
            
#suma de filas y columnas
sfila = np.zeros(n,dtype=int)
scolumna = np.zeros(n,dtype=int)
for i in range(0,n,1):
    for j in range(0,n,1):
        sfila[i] = sfila[i] + cuadrado[i,j]
        scolumna[i] = scolumna[i] + cuadrado[j,i]
        
# Suma diagonales
sdiagonal  = 0
sdiagonal2 = 0
for i in range(0,n,1):
    sdiagonal  = sdiagonal + cuadrado[i,i]
    sdiagonal2 = sdiagonal2 + cuadrado[i,n-1-i]

# verifica condiciones magico
magico = 1
if (masdeuno>0):
    magico = 0
if not(sdiagonal==sdiagonal2):
    magico = 0
for i in range(0,n,1):
    if not(sdiagonal==sfila[i]):
        magico = 0
    if not(sdiagonal==scolumna[i]):
        magico = 0

# SALIDA
print("El resultado es:")
print(magico)

resultado del algoritmo

tamaño cuadrado: 3
cuadrado [1,1]: 4
cuadrado [1,2]: 9
cuadrado [1,3]: 2
cuadrado [2,1]: 3
cuadrado [2,2]: 5
cuadrado [2,3]: 7
cuadrado [3,1]: 8
cuadrado [3,2]: 1
cuadrado [3,3]: 6
El resultado es:
1
>>> 

ejercicios resueltos Python mejo_it2003_t2 pdf

ejercicios resueltos Matlab mejo_it2003_t2 pdf

s3Eva_IT2003_T1 Raíces enteras positivas del polinomio

Ejercicio: 3Eva_IT2003_T1 Raíces enteras positivas del polinomio

Propuesta de solución en Python: py_pdf, también incluye versión en matlab: m_pdf

El problema se separa en sus partes principales.
Primero la función para encontrar las raíces enteras, usando un contador que
aumenta cuando encuentra que el polinomio evaluado en x tienen valor de 0.

En el programa, para ingresar el polinomio se almacenan solo los coeficientes,
el término iésimo también indica el exponente de coeficiente[i]*xi.

Nota: No se incluye la forma de realizar la gráfica en la solución presentara
para el examen.

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2003_T1 Raíces enteras positivas del polinomio
# propuesta de solución: edelros@espol.edu.ec

import numpy as np

def numraices(grado,coeficiente,a,b):
    encontre=0
    x = a
    while (x<=b):
        p = 0
        i = 0
        while (i<=grado):
            p = p + coeficiente[i]*(x**i)
            i = i + 1
        if (p==0):
            encontre = encontre+1
        x = x + 1
    return (encontre)

# PROGRAMA -----------------

# INGRESO
n = int(input("grado polinomio: "))
coeficiente = np.zeros(n+1,dtype=float)
for i in range(0,n+1,1):
    coeficiente[i] = float(input("coeficiente["+str(i)+"]: "))
print("Rango de busqueda: [a,b]")
a = int(input("a: "))
b = int(input("b: "))

# PROCEDIMIENTO
resultado = numraices(n,coeficiente,a,b)

# SALIDA
print("numero de raices enteras:")
print(resultado)

resultado del algoritmo

grado polinomio: 7
coeficiente[0]: 0
coeficiente[1]: -336
coeficiente[2]: 356
coeficiente[3]: 208
coeficiente[4]: -337
coeficiente[5]: 127
coeficiente[6]: 19
coeficiente[7]: 1
Rango de busqueda: [a,b]
a: -10
b: 40
numero de raices enteras:
1
>>> 

ejercicios resueltos Python mejo_it2003_t1 pdf

ejercicios resueltos Matlab mejo_it2003_t1 pdf

s3Eva_IT2002_T3 Determinar productos iguales entre vendedores

Ejercicio: 3Eva_IT2002_T3 Determinar productos iguales entre vendedores

Se usan listas de prueba para desarrollar el algoritmo, siendo:

vendedor1 = ['pera','manzana','uva']
vendedor2 = ['durazno','pera','naranja']

se obtiene:

ambos venden:
pera
>>> 

Tarea: Desarrollar el literal a, usando archivos.

Algoritmo en Python

# 3Eva_IT2002_T3 Determinar productos iguales entre vendedores
# desarrollo con listas, solo literal b
# Tarea, desarrollar literal a

# INGRESO
vendedor1 = ['pera','manzana','uva']
vendedor2 = ['durazno','pera','naranja']

# PROCEDIMIENTO
n = len(vendedor1)
m = len(vendedor2)
ambos = []
for i in range(0,n,1):
    for j in range(0,m,1):
        if vendedor1[i] == vendedor2[j]:
            ambos.append(i)

# SALIDA
w = len(ambos)
print('ambos venden:')
for k in range(0,w,1):
    cual = ambos[k]
    print(vendedor1[cual])

s3Eva_IT2002_T1 Triunfos, empates y derrotas por Goles

Ejercicio: 3Eva_IT2002_T1 Triunfos, empates y derrotas por Goles

Instrucciones en Python

explicación en video:

Algoritmo en Python

# 3Eva_IT2002_T1 Triunfos, empates y derrotas por Goles
import numpy as np

# INGRESO
goles = np.array([[0,4,2,1],
                  [5,0,3,2],
                  [0,2,0,1],
                  [1,0,2,0]])

# PROCEDIMIENTO
tamano = np.shape(goles)
n = tamano[0]
m = tamano[1]
triunfos = np.zeros(shape=(n,m),dtype=int)
ttriunfos = np.zeros(n,dtype=int)
# calcular los triunfos
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        if (goles[i,j] > goles[j,i]):
            triunfos[i,j] = 1
            triunfos[j,i] = 0
        j = j + 1
    i = i + 1
# calcular total de triunfos
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        ttriunfos[i] = ttriunfos[i] + triunfos[i,j]
        j = j + 1
    i = i + 1

# calcular empates
empates = np.zeros(shape=(n,m),dtype=int)
tempates = np.zeros(n,dtype=int)
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        if (goles[i,j] == goles[j,i]) and (i!=j):
            empates[i,j] = 1
            empates[j,i] = 1
        j = j + 1
    i = i + 1
# calcular total de empates
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        tempates[i] = tempates[i] + empates[i,j]
        j = j + 1
    i = i + 1

# Derrotas
derrotas = (n-1)*np.ones(n,dtype=int)
derrotas = derrotas - ttriunfos - tempates

# SALIDA
print(triunfos)
print(' triunfos por equipo: ')
print(ttriunfos)
print(empates)
print(' empates por equipo:')
print(tempates)
print(' derrotas por equipo:')
print(derrotas)

s3Eva_IT2000_T2 Matriz: puntos por goles en campeonato

Ejercicio: 3Eva_IT2000_T2 Matriz: puntos por goles en campeonato

Desarrollado en Python a partir el ejercicio 3Eva_IT2002_T1 Triunfos, empates y derrotas por Golesf

goles=np.array([[0, 3, 1, 2, 1],
                [1, 0, 3, 2, 3],
                [0, 2, 0, 1, 1],
                [1, 0, 2, 0, 1],
                [3, 4, 1, 2, 0]])

complementando la solución del ejercicio de triunfos empates y derrotas se obtiene para los datos ingresados:

 triunfos por equipo: 
[3 2 0 1 3]
 empates por equipo:
[0 0 1 0 1]
 derrotas por equipo:
[1 2 3 3 0]
puntos por equipo:
[ 9  6  1  3 10]
>>> 

Algoritmo en Python

# 3Eva_IT2000_T2 Matriz: puntos por goles en campeonato
import numpy as np

# INGRESO
goles=np.array([[0, 3, 1, 2, 1],
                [1, 0, 3, 2, 3],
                [0, 2, 0, 1, 1],
                [1, 0, 2, 0, 1],
                [3, 4, 1, 2, 0]])

# PROCEDIMIENTO
tamano = np.shape(goles)
n = tamano[0]
m = tamano[1]
triunfos = np.zeros(shape=(n,m),dtype=int)
ttriunfos = np.zeros(n,dtype=int)
# calcular los triunfos
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        if (goles[i,j] > goles[j,i]):
            triunfos[i,j] = 1
            triunfos[j,i] = 0
        j = j + 1
    i = i + 1
# calcular total de triunfos
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        ttriunfos[i] = ttriunfos[i] + triunfos[i,j]
        j = j + 1
    i = i + 1

# calcular empates
empates = np.zeros(shape=(n,m),dtype=int)
tempates = np.zeros(n,dtype=int)
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        if (goles[i,j] == goles[j,i]) and (i!=j):
            empates[i,j] = 1
            empates[j,i] = 1
        j = j + 1
    i = i + 1
# calcular total de empates
i = 0
while not(i>=n):
    j = 0
    while not(j>=m):
        tempates[i] = tempates[i] + empates[i,j]
        j = j + 1
    i = i + 1

# Derrotas
derrotas = (n-1)*np.ones(n,dtype=int)
derrotas = derrotas - ttriunfos - tempates

# puntos totales
puntos_triunfos = ttriunfos*3
puntos_empates  = tempates*1
puntos = puntos_triunfos+puntos_empates 

# SALIDA
print(triunfos)
print(' triunfos por equipo: ')
print(ttriunfos)
print(' empates por equipo:')
print(tempates)
print(' derrotas por equipo:')
print(derrotas)
print('puntos por equipo:')
print(puntos)

s3Eva_IT2000_T1 Validar caracteres tipo numérico

Ejercicio: 3Eva_IT2000_T1 Validar caracteres tipo numérico

Resultado esperado realizando la función de usuario

>>> esnumero('a')
'no es numerico'
>>> esnumero('1')
True
>>> esnumero('15')
'varios caracteres'
>>> 

>>> tresdigitos('12a')
0
>>> tresdigitos('123')
1

Algoritmo en Python

# 3Eva_IT2000_T1 Validar caracteres tipo numérico

def esnumero(caracter):
    numeros = ['0','1','2','3','4','5','6','7','8','9']
    n = len(caracter)
    if n == 1:
        esnumerico = 'no es numerico'
        enlista = caracter in numeros
        if enlista ==1:
            esnumerico = enlista
    else:
        esnumerico = 'varios caracteres'
    return(esnumerico)

def tresdigitos(cadena):
    n = len(cadena)
    revisa = 0
    for i in range(0,n,1):
        if esnumero(cadena[i])==1:
            revisa =  revisa + 1
    sontres= 0
    if revisa ==3 and n==3:
        sontres = 1
    return(sontres)

s3Eva_IIT2013_T4 Gestionar asientos en cine

Ejercicio: 3Eva_IIT2013_T4 Gestionar asientos en cine

Algoritmo en Python

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2013_T4 Gestionar asientos en cine
import numpy as np

# Genera la sala
n = int(input('numero filas: '))
m = int(input('numero columnas:'))
asiento = np.zeros(shape=(n,m), dtype=int)

opcion = '0'
while not(opcion=='5'):
    print(' 1. Vender Boletos')
    print(' 2._Mostrar_asientos')
    print(' 3. Contar vendidos')
    print(' 4. Buscar libre')
    print(' 5. Salir ')

    opcion = input('cual opcion: ')

    if (opcion=='1'):
        print('Vender Boletos')
        fila = int(input('fila:'))
        columna = int(input('columna:'))
        if (asiento[fila,columna]==0):
            asiento[fila,columna] = 1
        else:
            print('asiento ocupado')

        
    if (opcion=='2'):
        print('Mostrar_asientos')
        print(asiento)
        
    if (opcion=='3'):
        print('Contar vendidos')
        contar = 0
        for fila in range(0,n,1):
            for columna in range(0,m,1):
                contar = contar+asiento[fila,columna]
        print(contar)
        
    if (opcion=='4'):
        print('Buscar libre')
        
    if (opcion=='5'):
        print('Salir')

s3Eva_IT2013_T3 Menú de consejerías académicas

Ejercicios: 3Eva_IT2013_T3 Menú de consejerías académicas

Propuesta de solución en Python,  ejercicio iniciado en clase como referencia. Se incluyó grabar los datos en un archivo.

Tarea: continúa ejercicio en la siguiente clase, para las opciones no desarrolladas y la función del tema 2

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2013_T3 Menú de consejerías académicas

estudiante = []
opcion = '0'
while not(opcion=='7'):
    print('1. Ingresar datos de estudiante')
    print('2. Ingresar datos de consejero')
    print('3. Sorteo de consejeros/estudiantes')
    print('4. Mostrar lista de estudiantes por consejero')
    print('5. Mostrar consejero de un estudiante')
    print('6. Grabar datos')
    print('7. Salir')

    opcion = input('cual opcion: ')

    if (opcion=='1'):
        # INGRESO
        mtr = input('matricula: ')
        nom = input('nombre: ')
        ema = input('email: ')
        nac = int(input('año nacimiento: '))
        while not(nac>1900 and nac<2018):
            print('usar anos desde el ultimo siglo...')
            nac = int(input('año nacimiento: '))

        unestudiante = {'matricula':mtr,
                        'nombre':nom,
                        'email':ema,
                        'nacimiento':nac}
        estudiante.append(unestudiante)

    if (opcion=='4'):
        print('los estudiantes registrados son: ')
        print(estudiante)

    if (opcion=='6'):
        print('Guardar datos en archivo...')
        narchivo = 'misdatos.txt'

        archivo  = open(narchivo, 'w')
        n = len(estudiante)

        i = 0
        while not(i>=n):
            nom = estudiante[i]['nombre']
            ema = estudiante[i]['email']
            linea = nom +','+ema+ '\n' # str(nac)
            archivo.write(linea)
            i = i + 1

        archivo.close()

s3Eva_IT2013_T2 sorteo de consejeros para estudiantes

Ejercicio: 3Eva_IT2013_T2 sorteo de consejeros para estudiantes

Instrucciones en Python

Propuesta de solución en Python,  ejercicio iniciado en clase como referencia.

Algoritmo en Python

# 3Eva_IT2013_T2 sorteo de consejeros para estudiantes
import numpy as np
import random as rnd

# INGRESO
n = int(input('numero de estudiantes: '))
m = int(input('numero de profesores: '))

# PROCEDIMIENTO
consejero = np.zeros(n+1,dtype = int)
contador = np.zeros(m+1,dtype = int)
cupo = n//m
residuo = n%m
i = 1
while not(i>(n-residuo)):
    sorteo = int(rnd.random()*m) + 1
    if (contador[sorteo]<cupo):
        contador[sorteo] = contador[sorteo]+1
        consejero[i] = sorteo
        i = i + 1
cupo = cupo + 1
i = n - residuo + 1
while not(i>n):
    sorteo = int(rnd.random()*m) + 1
    if (contador[sorteo]<cupo):
        contador[sorteo] = contador[sorteo]+1
        consejero[i] = sorteo
        i = i + 1

# SALIDA
print(contador)
print(consejero)