Pesquisar este blog

Livros Recomendados

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

domingo, 14 de março de 2021

URI (BEECROWD) - 2493 - Jogo do Operador - Iniciante - C e C++

Jogo do Operador é o problema solucionado nesse post! Vejam!

Plataforma: URI (BEECROWD)

Problema2493

Enunciado:

Samu Elmito adora criar jogos peculiares para desafiar seus amigos. Desta vez, ele inventou um jogo chamado "Jogo do Operador", em que ele cria expressões básicas e cada jogador deve escolher uma expressão e preencher a lacuna com o operador correto para validá-la. Os jogadores poderão escolher operadores de somente três tipos: adição, subtração e multiplicação. Porém, se o jogador achar que não há operador entre os três tipos que valide a expressão, poderá responder Impossível.

Sua tarefa é simples: dadas as expressões e as respostas dos jogadores, determinar os jogadores que não passarão para a outra fase do jogo.


Linguagens: C e C++


Solução:

As respostas em C e C++ são iguais em termos de raciocínio aplicado, mas com estruturas diferentes.

Código em C:

#define TAM 50
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compara(const void *p1, const void *p2) {
    return strcmp(p1, p2);
}
int main() {
    int t, i, p, j, hits, x[TAM], y[TAM], z[TAM];
    char s, nome[55][55], str[55];
    while (scanf("%d", &t) != EOF) {
        for (i = 0; i < t; i++)
            scanf("%i %i=%i ", &x[i], &y[i], &z[i]);
        for (i = 0, j = 0, hits = 0; i < t; i++) {
            scanf("%s %d %c ", str, &p, &s);
            p--;
            if (s == '+' && x[p] + y[p] == z[p])
                hits++;
            else if (s == '-' && x[p] - y[p] == z[p])
                hits++;
            else if (s == '*' && x[p] * y[p] == z[p])
                hits++;
            else if (s == 'I' && x[p] + y[p] != z[p] && x[p] - y[p] != z[p]  && x[p] * y[p] != z[p])
                hits++;
            else
                strcpy(nome[j++], str);
        }
        if (hits == t)
            printf("You Shall All Pass!");
        else if (!hits)
            printf("None Shall Pass!");
        else {
            qsort(nome, j, 55, compara);
            printf("%s", nome[0]);
            for (i = 1; i < j; i++)
                printf(" %s", nome[i]);
        }
        printf("\n");
        memset(x, 0, TAM);
        memset(y, 0, TAM);
        memset(z, 0, TAM);
        memset(nome, 0, TAM);
    }
    return 0;
}

Código em C++:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
    int t, i, a, b, c, p, hits;
    char lixo, s;
    string str;    
    vector<int> x, y, z;
    vector<string> nome;
    while (cin >> t) {
        for (i = 0; i < t; i++) {
            cin >> a >> b >> lixo >> c;
            x.push_back(a);
            y.push_back(b);
            z.push_back(c);
        }
        for (i = 0, hits = 0; i < t; i++) {
            cin.ignore();
            cin >> str >> p >> s;
            p--;
            if (s == '+' && x.at(p) + y.at(p) == z.at(p))
                hits++;
            else if (s == '-' && x.at(p) - y.at(p) == z.at(p))
                hits++;
            else if (s == '*' && x.at(p) * y.at(p) == z.at(p))
                hits++;
            else if (s == 'I' && x.at(p) + y.at(p) != z.at(p) && x.at(p) - y.at(p) != z.at(p)  && x.at(p) * y.at(p) != z.at(p))
                hits++;
            else
                nome.push_back(str);
        }
        if (hits == t)
            cout << "You Shall All Pass!";
        else if (!hits)
            cout << "None Shall Pass!";
        else {
            sort(nome.begin(), nome.end());
            cout << nome.at(0);
            for (i = 1; i < nome.size(); i++)
                cout << " " << nome.at(i);
        }
        cout << endl;
        x.clear();
        y.clear();
        z.clear();
        nome.clear();
    }
    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