Pesquisar este blog

Livros Recomendados

sexta-feira, 17 de dezembro de 2021

URI (BEECROWD) - 3303 - Palavrão - Iniciante - C e C++

Aqui vai mais uma solução da URI/BEECROWD! Exercício novo, resolvido de barbada, muito fácil :)

Fiz de formas diferentes, dava pra fazer mais fácil ainda! Confira a resposta que interessa a você com base na linguagem de sua preferência!

Antes de resolver qualquer algoritmo do URI (BEECROWD agora), recomendamos seguir os seguintes passos:

  1. Ler todo enunciado do problema.
  2. Ler os tópicos do fórum em caso de dúvidas
  3. Preparar arquivos de entrada para teste, considerando as entradas de exemplo do URI, do udebug e outros valores limite;
  4. Preparar o ambiente de desenvolvimento e utilizar os mesmos parâmetros dos compiladores do URI
  5. Preparar um código-fonte padrão, já contendo a chamada às bibliotecas padrão, pré-processadores, retorno de função e um comando de escrita com "\n", pois no URI a grande maioria dos problemas exige a quebra de linha final.


Plataforma
: URI (BEECROWD)

Problema3303

Enunciado:

Recentemente Juquinha aprendeu a falar palavrões. Espantada com a descoberta do garoto, sua mãe o proibiu de falar qualquer palavrão, sobre o risco de o menino perder sua mesada.

Como Juquinha odeia ficar sem mesada, ele te contratou para desenvolver um programa que informe para ele se uma palavra é um palavrão ou não.

Palavrões são palavras que contém dez ou mais caracteres, todas as outras palavras são consideradas palavrinhas.

Linguagens: C e C++

Solução:

O importante é, de alguma forma, ler a palavra e contar os seus caracteres. Sendo 10 ou mais, palavrao, sendo menos, palavrinha.

Código em C:

Criei uma função para calcular a quantidade de caracteres de um char*. Essa função retornará um inteiro sem sinal (tamanho sempre será não negativo). No comando de escrita usei o ternário para aproveitar os primeiros caracteres, pois palavrinha e palavrao só diferem nos caracteres finais, os seis primeiros são iguais.

#include <stdio.h>
#define MAX_TAM 21

unsigned int getTam(char *palavra) {
    unsigned int tam = 0;
    if (!(palavra[tam] == '\0' && tam == 0))
	    while (palavra[++tam] != '\0');
	return tam;
}

int main() {
    char palavra[MAX_TAM];
    scanf("%s", palavra);
    printf("palavr%s\n", (getTam(palavra) < 10? "inha" : "ao"));

    return 0;
}
Código em C++:

Na solução em C++ preferi ser mais rápido. :)
Fiz uma solução curta aproveitando que string em C++ tem a função size() e já utilizei ela. Aliás, length() e size() são iguais em C++ e possuem complexidade O(1) (constante), ou seja, utilizar qualquer uma das duas produzirá o mesmo resultado. Qual solução você prefere?

#include <iostream>

using namespace std;

int main() {
    string palavra;
    cin >> palavra;
    cout << "palavr" << (palavra.size() < 10? "inha" : "ao") << endl;
    return 0;
}

2 comentários:

  1. Olá! Só um comentário sobre a solução em C que facilitaria a resolução: a biblioteca padrão tem funções pra manipular strings, sendo uma delas a strlen(), que retorna um inteiro que é o tamanho da string. Só precisaria fazer o include da biblioteca. Abraço e parabéns pelo blog!

    ResponderExcluir
    Respostas
    1. Oi Gabriel! Com certeza utilizar strlen aqui é mais fácil, sim! Só uma observação: strlen retorna um valor do tipo size_t, que, a depender da implementação, será de algum tipo sem sinal (unsigned) -- o que faz todo sentido, pois uma cadeia de caracteres não pode ter tamanho negativo. Ele deve ser um inteiro sem sinal, como manda a documentação, mas também pode ser outro valor. Aqui na minha máquina o size_t é um long unsigned int. Você pode verificar o que é um size_t na sua máquina olhando o arquivo stddef.h.
      Obrigado pela interação conosco, um grande abraço!

      Excluir

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