Este é mais um daqueles posts com exercícios resolvidos do Beecrowd!
Nesse post eu resolvi e postei o exercício Máquina de Verificação Automatizada, da categoria Ad-hoc.
A resposta desse exercício é bem simples :)
Plataforma: URI (BEECROWD)
Problema: 1743
Enunciado:
A Internet Computer Parts Company (ICPC) é uma loja on-line que vende peças de computador. Pares de conectores elétricos em linha estão entre as peças mais populares que ICPC vende. No entanto, elas também são uma das peças que são devolvidos com mais freqüência por clientes insatisfeitos, porque devido a erros na embalagem os conectores enviados para os clientes podem não ser compatíveis..
Um conector em-linha é constituído por cinco pontos de ligação, marcadas de 1 a 5. Cada ponto de ligação de um conector pode ser ou um plugue ou uma tomada. Dizemos dois conectores são compatíveis se, para cada rótulo, um ponto de conexão é um plugue e outro ponto de ligação é uma tomada (em outras palavras, dois conectores são compatíveis se, para cada ponto de conexão com o mesmo rótulo, um plugue e uma tomada se encontram quando os dois conectores estão conectados).
A figura abaixo mostra exemplos de dois conectores que são compatíveis e dois conectores que não são compatíveis.
ICPC está introduzindo uma Máquina de Verificação Automártica (ACM) de última geração, com um verificador óptico, que vai verificar se os dois conectores embalados para um cliente são realmente compatíveis. O complexo e caro hardware do ACM está pronto, mas eles precisam de sua ajuda para terminar o software.
Dadas as descrições de um par de conectores em linha, sua tarefa é determinar se os conectores são compatíveis.
Linguagens: C e C++
Solução:
As soluções aqui são basicamente iguais e seguem a mesma lógica. Muda apenas o uso do tipo string em C++, que nem era necessário, para falar a verdade.
A ideia é ler os valores dos pontos dos dois conectores. Eu armazenei os dados do primeiro conector em um array de cinco posições. Os dados do segundo conector não era necessário armazenar (até poderia), pois, da forma que resolvi, basta ler um dos valores e, se for igual ao valor do primeiro conector, já atribui o valor negativo ("N" ou 'N', em cada caso) para a variável resposta, caso em que não são compatíveis. A variável resposta já é inicializada com Y, então o valor só muda se valor for igual ao i-ésimo conector. Além disso, se um dos valores já é igual ao conector, o break força a interrupção do laço e exibe a resposta.
Código em C:
#include <stdio.h> int main() { short unsigned int conector[5], valor, i; char resposta = 'Y'; for (i = 0; i < 5; i++) scanf("%hu", &conector[i]); for (i = 0; i < 5; i++) { scanf("%hu", &valor); if (valor == conector[i]) { resposta = 'N'; break; } } printf("%c\n", resposta); return 0; }
Código em C++:
#include <iostream> using namespace std; int main() { short unsigned int conector[5], valor; string resposta = "Y"; for (int i = 0; i < 5; i++) cin >> conector[i]; for (int i = 0; i < 5; i++) { cin >> valor; if (valor == conector[i]) { resposta = "N"; break; } } cout << resposta << endl; return 0; }