O problema "Pula Sapo" é de nível iniciante e utiliza estrutura condicional, estrutura de repetição e cálculo do valor absoluto. Veja na sequência desse post a minha resposta para este problema!
Plataforma: URI (BEECROWD)
Problema: 1961
Enunciado:
Em cada fase do jogo do Pula Sapo você deve conduzir seu anfíbio através de uma sequência de canos de alturas diferentes até chegar a salvo no cano mais à direita. Entretanto, o sapo só consegue sobreviver se a diferença de altura entre canos consecutivos for de, no máximo, a altura do pulo do sapo. Caso a altura do cano seguinte seja muito alta, o sapo bate no cano e cai. Se a altura do cano seguinte for muito baixa, o sapo não aguenta a queda. O sapo sempre começa em cima do cano mais à esquerda.
Neste jogo, a distância entre os canos é irrelevante, ou seja, o sapo sempre consegue alcançar o próximo cano com um pulo.
Você deve escrever um programa que, dadas as alturas dos canos e a altura do pulo do sapo, mostra se a fase do jogo pode ser vencida ou não.
Linguagens: C e C++
Solução:
Após ler os valores, testa se o módulo de valor menos o valor anterior é maior que p, assim já interrompe o laço se isso for verdade. É necessário reatribuir o valor da variável anterior, para sempre saber quem foi o valor lido anteriormente e assim refazer o teste.
Código em C:
#include <stdio.h> #include <math.h> int main() { int p, n, anterior, valor, resposta = 0; scanf("%i %i", &p, &n); n--; scanf("%i", &anterior); while (n--) { scanf("%i", &valor); if (abs(valor - anterior) > p) { resposta = 1; break; } anterior = valor; } if (resposta) printf("GAME OVER\n"); else printf("YOU WIN\n"); return 0; }
Código em C++:
Segue o mesmo raciocínio do código em C.
#include <iostream> #include <cmath> using namespace std; int main() { int p, n, anterior, valor, resposta = 0; cin >> p >> n; n--; cin >> anterior; while (n--) { cin >> valor; if (abs(valor - anterior) > p) { resposta = 1; break; } anterior = valor; } if (resposta) cout << "GAME OVER" << endl; else cout << "YOU WIN" << endl; return 0; }