Java - Saltos de Mario

 
Vista:
sin imagen de perfil

Saltos de Mario

Publicado por dev3rt (22 intervenciones) el 03/03/2017 13:24:51
Estoy intentando hacer este problema de Mario:(lo tengo que hacer con funciones)
Enunciado
Mario se encuentra ante el castillo final. El puede ver desde arriba del muro donde se encuentra. Muy pronto podrá entrar en la habitación Koopa, enfrentarse (y ganar) al monstruo final y salvar a la princesa.

No obstante, tiene ante sí una serie de muros que deberá sobrepasar. Por ello, saltará desde el primero de ellos, donde se encuentra, al siguiente, y desde este al siguiente, y así sucesivamente hasta llegar al último.

La pregunta que se plantea es, ¿cuántos de estos saltos serán hacia arriba y cuántos serán hacia abajo? En Mario da un salto hacia arriba cuando tiene que subir a un muro que está por encima de él, y hacia abajo cuando ha de bajar a un muro que está por debajo.

Para ayudar a saber la solución, programa una acción saltos que obtenga la cantidad de saltos arriba y la cantidad que son hacia abajo.

Habrá que hacer un programa que invoque la función saltos tantas veces como casos de prueba haya (ver siguiente apartado).

entrada

El primer valor de la entrada es un número que indica la cantidad de casos de prueba a comprobar. Cada caso de prueba comienza con un entero mayor a cero y no mayor que 109 que indica la cantidad de muros de la escena (recuerda que en Mario se encuentra en la parte superior del primero). A continuación se proporciona la serie de enteros que indican la altura de cada uno de ellos.

salida

Para cada caso de prueba se mostrará una línea en la que aparecerán dos enteros, uno con los saltos hacia arriba y el otro con los saltos hacia abajo, separados por un espacio.

Entrada de ejemplo

3
8
1 4 2 2 3 5 3 4
2
9 9
5
1 2 3 4 5

Salida de ejemplo

4 2
0 0
4 0
Mi codigo:
import java.util.Scanner;

public class Ex8 {

static Scanner leer;

public static void main(String[] args) {
leer = new Scanner(System.in);
int numero = leer.nextInt();
for (int i = 0; i < numero; i++) {
int saltoArriba = 0;
int saltoAbajo = 0;
saltos(saltoArriba, saltoAbajo, i);
System.out.printf("%d %d", saltoArriba, saltoAbajo);
System.out.println();
}
}



private static void saltos(int saltoArriba, int saltoAbajo, int i) {
int muros, altura, alturaFir, j;
muros = leer.nextInt();
altura = leer.nextInt();

j = 1;
while (j < muros) {
alturaFir = leer.nextInt();
if (altura < alturaFir) {
saltoArriba++;
} else if (altura > alturaFir) {
saltoAbajo++;
}
altura = alturaFir;
j++;
}

i++;

}

}

Espero que me podais ayudar,Gracias
saludos
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
sin imagen de perfil
Val: 190
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Saltos de Mario

Publicado por preguntas (70 intervenciones) el 03/03/2017 15:59:03
Jaja se ve divertido pero no entiendo ni nada jaja.

No, espera... Creo que ya lo tengo.

Lo que hay que hacer es decirle a mario: Hey Mario, Te pongo 5 muros. El primer es de 1 piso de altura, el segundo de 3, el segundo de 2, el cuarto de 4, el quinto es de 5. jaja te he jodido la vida.

y la salida seria entonces: subio 4 y bajo 1.

Estoy en lo correcto? o porfavor corrígeme para poder ayudarte.
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
sin imagen de perfil
Val: 144
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Saltos de Mario

Publicado por Thanatos (97 intervenciones) el 04/03/2017 00:12:44
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
36
37
import java.util.Scanner;
 
class Ex8 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        int nCasos = sc.nextInt();
        for (int caso = 0; caso < nCasos; ++caso) {
            saltos(sc);
        }
 
        sc.close();
    }
 
    private static void saltos(Scanner sc) {
        int nMuros = sc.nextInt();
        if (nMuros > 0 && nMuros <= 109) {
            int saltosArriba = 0;
            int saltosAbajo  = 0;
 
            int alturaActual = sc.nextInt();
            for (int muro = 1; muro < nMuros; ++muro) {
                int alturaSiguiente = sc.nextInt();
                if (alturaSiguiente < alturaActual) {
                    ++saltosAbajo;
                } else if (alturaSiguiente > alturaActual) {
                    ++saltosArriba;
                }
                alturaActual = alturaSiguiente;
            }
 
            System.out.format("%d %d%n", saltosArriba, saltosAbajo);
        }
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar