Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 1961. Mostrar todas as postagens
Mostrando postagens com marcador 1961. Mostrar todas as postagens

domingo, 28 de fevereiro de 2021

URI (BEECROWD) - 1961 - Pula Sapo - Iniciante - C e C++

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)

Problema1961

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

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas