Python - Ayuda en un problema de algoritmos

 
Vista:
sin imagen de perfil

Ayuda en un problema de algoritmos

Publicado por david (1 intervención) el 26/02/2017 03:03:48
Tengo el siguiente problema

"Dada una secuencia de números enteros terminada con 0, hacer un programa
para contar el número de cambios de dirección en la secuencia. Existen
dos posibles direcciones: incremental y decremental. Una secuencia es
incremental si cada número es mayor o igual al anterior. Una secuencia es
decremental si cada número es menor o igual al anterior. Por ejemplo, para
la secuencia 4 5 5 2 1 9 su programa debe imprimir 2. Hay dos cambios
de dirección: primero tenemos la secuencia incremental 4 5 5, luego un
cambio de dirección ya que llegamos a una secuencia decremental 2 1 y
luego un segundo cambio de dirección para la secuencia incremental 9."

Y he hecho esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
na = 1
ns= 1
creciente = ' '
decreciente = ' '
cambioc = 0
cambiod = 0
auxc = creciente
auxd = decreciente
 
while na !=0:
  decreciente = ' '
  decreciente = ' '
  na = int(input())
  if na == 0:
    break
  ns = int(input())
  if ns == 0:
    break
  if na != 0 or ns != 0:
    if na < ns:
      creciente = 'creciente'
    if na > ns:
     decreciente = 'decreciente'
    if creciente == 'creciente':
      cambioc = 1
    elif creciente != 'creciente':
      cambioc = 0
    elif decreciente == 'decreciente':
      cambiod = 1
    elif decreciente != 'decreciente':
      cambiod = 0
 
 
cambio = cambioc+cambiod
print ('Cambios: '+str(cambio))

Pero no se como hacer que cuente el numero de cambios y como recibir los numeros, si tengo que tener dos variables como "Numero anterior" y "Numero siguiente" o simplimente solo una variable "numero" y un auxiliar que guarde lo del anterior
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda en un problema de algoritmos

Publicado por Alejandro (109 intervenciones) el 27/02/2017 05:40:07
Hola david, prueba con esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""Programa para contar el numero de cambios de direccion en una secuencia."""
 
numeros = []
cambios = 0
incrementos = 0
decrementos = 0
estado = ''
num = int(input('Ingresa un número o 0 para terminar: '))
while (num != 0):
    numeros.append(num)
    num = int(input('Ingresa un número o 0 para terminar: '))
if len(numeros) >= 2:
    if numeros[0] != 0 and numeros[1] != 0:
        if numeros[0] < numeros[1]:
            estado = 'incremento'
        else:
            estado = 'decremento'
        for i, v in enumerate(numeros):
            if v == 0:
                break
            elif i >= 2:
                if numeros[i - 1] >= v and estado == 'incremento':
                    cambios += 1
                    decrementos += 1
                    estado = 'decremento'
                elif numeros[i - 1] < v and estado == 'decremento':
                    cambios += 1
                    incrementos += 1
                    estado = 'incremento'
print('******************* RESULTADO FINAL *******************')
print('Numero de cambios', cambios)
print('Cantidad de incrementos', incrementos)
print('Cantidad de decrementos', decrementos)

Comentanos si te sirvio. Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar