
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
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


0