Mais um exercício de nível iniciante sendo resolvido e disponibilizado para vocês! O exercício A Sociedade do Anel trabalha basicamente a leitura de cadeias de caracteres e estruturas condicionais. Eu usei switch, tanto em C quanto em C++! Veja na sequência desse post.
Plataforma: URI (BEECROWD)
Problema: 2949
Linguagens: C e C++
Solução:
Ler n e as n linhas (cadeias de caracteres) e testar o último caractere. Isso é útil porque é este caractere que vai informar se é anão, elfo, mago etc. Todos os outros caracteres anteriores não importam. O nome da pessoa não importa, precisamos apenas contar o seu tipo de raça no contador correto. Eu fiz isso tanto em C quanto em C++ utilizando switch case, mas você pode fazer com ifs aninhados.
No fim, basta imprimir o contador de cada tipo de raça com a mensagem solicitada no exercício, sem esquecer da quebra de linha.
Código em C:
Em C eu resolvi criando um array de char e obtendo a posição tamanho-2, assim não pega o terminador de string e vai exatamente ao último caractere informado pelo usuário em cada linha. A leitura da linha foi feita com fgets.
#include <stdio.h> #include <string.h> int main() { char palavra[256]; int n, ca = 0, ce = 0, ch = 0, cm = 0, cx = 0; scanf("%d", &n); while (n--) { fgets(palavra, 256, stdin); switch (palavra[strlen(palavra)-2]) { case 'A': ca++; break; case 'E': ce++; break; case 'H': ch++; break; case 'M': cm++; break; default: cx++; break; } } printf("%d Hobbit(s)\n%d Humano(s)\n%d Elfo(s)\n%d Anao(s)\n%d Mago(s)\n", cx, ch, ce, ca, cm); return 0; }
#include <iostream> #include <cstring> using namespace std; int main() { string palavra; int n, ca = 0, ce = 0, ch = 0, cm = 0, cx = 0; cin >> n; cin.ignore(); while (n--) { getline(cin, palavra); switch (palavra.at(palavra.length()-1)) { case 'A': ca++; break; case 'E': ce++; break; case 'H': ch++; break; case 'M': cm++; break; default: cx++; break; } } cout << cx << " Hobbit(s)" << endl << ch << " Humano(s)" << endl << ce << " Elfo(s)" << endl << ca << " Anao(s)" << endl << cm << " Mago(s)" << endl; return 0; }
Nenhum comentário:
Postar um comentário