Pesquisar este blog

Livros Recomendados

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

terça-feira, 16 de março de 2021

URI (BEECROWD) - 2557 - R+L=J - Strings - C e C++


Resolvi um exercício da categoria Strings no URI/BEECROWD! Ele se chama R+L=J. Achei bem fácil, veja abaixo como fiz em C e C++!

Plataforma: URI (BEECROWD)

Problema2557

Enunciado:

Durante sua grande aventura na Terra do Oeste, Joãozinho descobriu um livro sagrado que, segundo as lendas, foi escrito pelos próprios deuses antigos. Uma passagem em particular chamou a atenção do jovem aventureiro:

“A origem daquele que nada sabe se revelará quando aquele escolhido pelos deuses desvendar o enigma por eles lhe imposto. R+L=J.”

O enigma o intrigou bastante. Joãozinho logo começou a procurar por valores de R, L e J que satisfazem a equação citada na passagem. Após investigações, o jovem encontrou dois dos três valores citados. Joãozinho deve agora determinar o terceiro dos valores citados, para que o enigma seja solucionado e para que “a origem daquele que nada sabe” seja revelada.

Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char linha[50];
    char *token;
    int v[3], r;
    
    while (fgets(linha, 50, stdin) != NULL) {
        
        r = 2;
        token = strtok(linha, "+");
        if (token[0] != 'R')
            v[0] = atoi(token);
        else {
            v[0] = 0;
            r = 0;
        }
        token = strtok(NULL, "=");
        if (token[0] != 'L')
            v[1] = atoi(token);
        else {
            v[1] = 0;
            r = 1;
        }
        token = strtok(NULL, "\n");
        if (token[0] != 'J')
            v[2] = atoi(token);
        else
            v[2] = 0;
        
        if (!r)
            printf("%d\n", v[2] - v[1]);
        else if (r == 1)
            printf("%d\n", v[2] - v[0]);
        else
            printf("%d\n", v[0] + v[1]);
    }

    return 0;
}

Código em C++:

#include <iostream>
using namespace std;
int main() {
    string linha, token;
    int v0, v1, v2, r, pos;
    while (getline(cin, linha)) {
        r = 2;
        pos = linha.find("+");
        token = linha.substr(0, pos);
        if (token[0] != 'R')
            v0 = stoi(token);
        else {
            v0 = 0;
            r = 0;
        }
        linha.erase(0, pos + 1);
        pos = linha.find("=");
        token = linha.substr(0, pos);
        if (token[0] != 'L')
            v1 = stoi(token);
        else {
            v1 = 0;
            r = 1;
        }
        linha.erase(0, pos + 1);
        pos = linha.find("\n");
        token = linha.substr(0, pos);
        if (token[0] != 'J')
            v2 = stoi(token);
        else
            v2 = 0;
        if (!r)
            cout << v2 - v1 << endl;
        else if (r == 1)
            cout << v2 - v0 << endl;
        else
            cout << v0 + v1 << 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