Pesquisar este blog

Livros Recomendados

sábado, 20 de março de 2021

URI (BEECROWD) - 2808 - Mais Cavalos - Iniciante - C e C++

Mais Cavalos! Esse é o nome do exercício resolvido e cuja resposta apresento aqui.  Espero que consigam compreender a resposta!

Plataforma: URI (BEECROWD)

Problema2808


Linguagens: C e C++


Solução:

Esse exercício eu fiz de algumas formas diferentes, mas todas elas utilizam o mesmo raciocínio. Basta ler os quatro valores e testar a diferença absoluta entre as linhas e as colunas, verificando as condições:

  • abs (col - colDest) = 2 E abs(line - lineDest) = 1;
  • OU
  • abs (col - colDest) = 1 E abs(line - lineDest) = 2;
Se a condição for satisfeita é válido, se não for é inválido.
Para utilizar abs, a função que calcula o valor absoluto, foi necessário acrescentar a biblioteca matemática (math.h em C e cmath em C++). Aliás, só fiz isso por praticidade, porque também era possível -- e fácil! -- ter criado essa função manualmente, não é verdade?

Código em C:

Essa solução aqui nem é a melhor, foi só pra mostrar um jeito um pouco diferente de resolver. Podia ter eliminado um IF e uma variável. E você, como resolveu esse exercício em C?

#include <stdio.h>
#include <math.h>

int main() {
    int line, lineDest, flag = 1;
    char col, colDest;
    
    scanf("%c%i %c%i", &col, &line, &colDest, &lineDest);

    if ((abs(col-colDest) == 2 && abs(line-lineDest) == 1) || (abs(col-colDest) == 1 && abs(line-lineDest) == 2))
        flag = 0;
    if (flag)
        printf("IN");
        
    printf("VALIDO\n");
    
    return 0;
}


Código em C++:

Solução com lógica semelhante a que apresentei em C, mas sem o uso da flag.

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    int line, lineDest;
    char col, colDest;
    
    cin >> col >> line >> colDest >> lineDest;

    if ((abs(col-colDest) == 2 && abs(line-lineDest) == 1) || (abs(col-colDest) == 1 && abs(line-lineDest) == 2))
        cout << "VALIDO" << endl;
    
    else
        cout << "INVALIDO" << endl;

    return 0;
}

Nenhum comentário:

Postar um comentário

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