In [1]:
"""
IPython Notebook v4.0 para python 2.7
Librerías adicionales: Ninguna.
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. (c) Sebastian Flores.
"""

# Configuracion para recargar módulos y librerías 
%reload_ext autoreload
%autoreload 2

from IPython.core.display import HTML

HTML(open("style/iwi131.css", "r").read())


Out[1]:






IWI131

Programación de Computadores

Actividad 1 - Diagrama de Flujo

Sebastián Flores

http://progra.usm.cl/

https://www.github.com/sebastiandres/iwi131

Enunciado

Thomas compra $n$ manzanas y quiere dividirlas entre sus amigos Teresa y Chuck.

Cada manzana pesa 100 gramos o 200 gramos. Por supuesto Thomas no quiere ofender a ninguno de sus amigos. Por eso, el peso total de las manzanas que le de a Teresa tiene que ser igual al peso total de manzanas dadas a Chuck.

Desafortunadamente Thomas no tiene un cuchillo en estos momentos, por lo tanto no puede dividir ninguna manzana en partes. Ahora usted debe indicarle si es posible dividir todas las manzanas de forma justa entre sus amigos.

Inputs y Outputs

Entrada

Inicialmente se ingresarán un número $n \in IN$, indicando el número de manzanas. Luego se ingresan n números $w_1 , w_2 , ... , w_n$($w_i = 100$ o $w_i = 200$), donde $w_i$ es el peso de la manzana i-ésima.

Salida

Mostrar la palabra ”Si” si es posible dividir todas las manzanas entre sus amigos. En caso contrario, mostrar ”No”.

Ejemplos

Ejemplos provistos

  • 3 100 200 100 → Si
  • 4 100 100 100 200 → No
  • 3 200 200 200 → No

Ejemplos

Otros ejemplos

  • 1 100 → No
  • 1 200 → No

  • 2 100 100 → Si

  • 2 100 200 → No
  • 2 200 200 → Si

  • 3 100 100 100 → No

  • 3 100 100 200 → Si
  • 3 100 200 200 → No
  • 3 200 200 200 → No

  • 4 100 100 100 100 → Si

  • 4 100 100 100 200 → No
  • 4 100 100 200 200 → Si
  • 4 100 200 200 200 → No
  • 4 200 200 200 200 → Si

Ejemplos

¿Que regla es posible de aplicar?

  • Si el número de manzanas de 100 es impar, NO se puede. NUNCA.
  • Si el número de manzanas de 100 es par y el número de manzanas de 200 es par, SI se puede.
  • Si el número de manzanas de 100 es par y == a 0, y el número de manzanas de 200 es impar, NO se puede.
  • Si el número de manzanas de 100 es par y != de 0, y el número de manzanas de 200 es impar, SI se puede.

Eso es todo. El resto es contar manzanas, y aplicar esta lógica.

Diagrama de flujo


In [3]:
# -*- coding: utf-8 -*-
N = int(raw_input("Ingrese los números:\n"))
j = 1
n100 = 0
n200 = 0
# Contemos manzanas
while j<=N:
    w = int(raw_input(""))
    if w==100:
        n100 = n100 + 1
    else:
        n200 = n200 + 1
    j = j+1
# Calculemos si es posible
if n100%2==1:
    print "NO"
else:
    if n200%2==0:
        print "SI"
    else:
        if n100>0:
            print "SI"
        else:
            print "NO"


Ingrese los números:
6
100
200
200
100
150
100
NO

In [5]:
# -*- coding: utf-8 -*-
N = int(raw_input("Ingrese los números:\n"))
j = 1
n100 = 0
n200 = 0
# Contemos manzanas
while j<=N:
    w = int(raw_input(""))
    if w==100:
        n100 = n100 + 1
    else:
        n200 = n200 + 1
    j = j+1
# Calculemos si es posible
if n100%2==1:
    print "NO"
elif n200%2==0: # ademas sabemos que n100 es par
    print "SI"
elif n100>0: # ademas sabemos que n100 es par y n200 es impar
    print "SI"
else: # ademas sabemos que n100 es par!=0 y n200 es impar
    print "NO"


Ingrese los números:
4
150
150
150
150
SI

In [7]:
str = raw_input("Ingrese texto")
print "Hola ", str


Ingrese textoSebastian
Hola  Sebastian