O problema "A Corrida de Lesmas" é da categoria Iniciante no Beecrowd. Apesar disso, é mais difícil do que alguns problemas Ad-hoc na minha opinião. Nada que exija tanto, basicamente é necessário lidar com estruturas condicionais e atribuição de variáveis. Confira na sequência!
Plataforma: URI (BEECROWD)
Problema: 1789
Enunciado:
A corrida de lesmas é um esporte que cresceu muito nos últimos anos, fazendo com que várias pessoas dediquem suas vidas tentando capturar lesmas velozes, e treina-las para faturar milhões em corridas pelo mundo. Porém a tarefa de capturar lesmas velozes não é uma tarefa muito fácil, pois praticamente todas as lesmas são muito lentas. Cada lesma é classificada em um nível dependendo de sua velocidade: Nível 1: Se a velocidade é menor que 10 cm/h . Nível 2: Se a velocidade é maior ou igual a 10 cm/h e menor que 20 cm/h . Nível 3: Se a velocidade é maior ou igual a 20 cm/h . Sua tarefa é identificar qual nível de velocidade da lesma mais veloz de um grupo de lesmas.
Linguagens: C e C++
Solução:
É necessário ler os valores e procurar o maior. O valor da variável maior, para cada caso, inicia em 1 porque é sabido que todo valor será 1 ou mais. Assim, se o valor recebido for maior que 1, a variável maior é atribuída com este valor. Imediatamente após isso, testamos se este maior valor é maior ou igual a 20 (será nível 3); senão, se é maior ou igual a 10 (será nível 2) ou será nível se não se enquadrar nessas condições (ou seja, o valor é menor que 10). A variável nível guarda esse valor e é atualizada em cada caso.
Após ler todos os casos, basta imprimir a variável nível.
Código em C:
#include <stdio.h> int main() { int casos; while(scanf("%i",&casos)!=EOF) { int contador=0,maior=1,valor,nivel=1; while(contador<casos) { scanf("%i ",&valor); if(valor>maior) { maior = valor; if(maior>=20) nivel=3; else { if(maior>=10) nivel=2; } } contador++; } printf("%i\n",nivel); } return 0; }
Código em C++:
#include <iostream> int main() { int casos; while(std::cin >> casos) { int contador = 0, maior = 1, valor, nivel = 1; while(contador<casos) { std::cin >> valor; if(valor > maior) { maior = valor; if(maior >= 20) { nivel = 3; } else { if(maior >= 10) nivel = 2; } } contador++; } std::cout << nivel << std::endl; } return 0; }
Solução alternativa em C++:
Essa solução segue a mesma lógica mas só verifica o nível após saber quem é o maior número, ou seja, lê todos os valores primeiro e substitui o valor da variável maior (max) quando o valor lido for maior que ela. Depois disso faz os testes e imprime o nível respectivo, sem a necessidade de armazenar o nível em uma variável.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> using namespace std; int main() { int n, v; while(cin>>n){ int max = 0; while(n--){ int v; cin >> v; if(v>max) max = v; } if(max<10) cout << 1 << endl; else if(max<20) cout << 2 << endl; else cout << 3 << endl; } return 0; } |
Nenhum comentário:
Postar um comentário