Pular para o conteúdo principal

Questão de Programação — C++ (mais mais) — Quadrix 2023

ProgramaçãoC++ (mais mais)
Código
qg027834
Banca
Quadrix
Órgão
CRM-MG
Ano
2023
Nível
Superior
Cargo
CRM - MG - Analista de Sistemas
#include <iostream>#include <cctype>int main() {std::string texto;std:: cout << “Digite um texto: ”;std::getline(std::cin, texto);for (char& c : texto) {c = std::toupper(c);}std::cout << “Resultado: ” << texto << std::endl;return 0;}O programa em C++ acima tem a função de
  1. Aconverter caracteres em maiúsculo.
  2. Bconverter caracteres em minúsculo.
  3. Cconcatenar caracteres.
  4. Dcontar a quantidade de caracteres em um texto.
  5. Eremover do texto somente os caracteres maiúsculos
Revelar gabarito e comentário

GabaritoA — converter caracteres em maiúsculo.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Conversão de caracteres em C++

Gabarito: letra A. O programa lê uma string, percorre cada caractere e aplica std::toupper(c), que converte o caractere para maiúsculo, modificando a string original. A função toupper da biblioteca <cctype> é a chave da questão.

O código apresentado é um exemplo clássico de manipulação de strings em C++. Vamos entender o fluxo:

  1. Inclusão de bibliotecas: #include <iostream> para entrada/saída padrão e #include <cctype> para funções de classificação e conversão de caracteres.

  2. Declaração da string: std::string texto; cria uma variável para armazenar o texto.

  3. Entrada de dados: std::getline(std::cin, texto); lê uma linha inteira do usuário, incluindo espaços.

  4. Laço de repetição: for (char& c : texto) é um range-based for loop (disponível desde C++11) que percorre cada caractere da string. O uso de char& (referência) é crucial: permite modificar diretamente o caractere na string original, sem precisar de uma cópia.

  5. Conversão: c = std::toupper(c); chama a função toupper que, para cada caractere, retorna sua versão em maiúscula (se for uma letra minúscula). O resultado é atribuído de volta ao caractere c, que, por ser uma referência, altera a string texto.

  6. Saída: std::cout << "Resultado: " << texto << std::endl; imprime o texto já convertido.

A função std::toupper é definida no cabeçalho <cctype> e, na versão mais comum, recebe um int (que representa um caractere) e retorna o caractere convertido para maiúsculo. Se o caractere não for uma letra minúscula, ele é retornado inalterado. É importante notar que, em C++, a versão de toupper da <cctype> opera com valores unsigned char ou EOF, e o comportamento com caracteres acentuados (como 'ç', 'ã') pode não ser o esperado, pois depende da codificação local. Para uma conversão robusta com caracteres acentuados, seria necessário usar std::towupper (para wchar_t) ou bibliotecas de internacionalização.

A pegadinha desta questão está em reconhecer que o laço modifica a string original e que a função toupper converte para maiúsculo, não para minúsculo. A alternativa B inverte o sentido, e as demais descrevem operações completamente diferentes.

  1. 1Lê a string
  2. 2Percorre cada caractere
  3. 3Converte para maiúsculo
  4. 4Imprime o resultado
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa descreve exatamente o que o código faz: converter caracteres em maiúsculo. O laço for (char& c : texto) percorre cada caractere, e c = std::toupper(c); transforma cada letra minúscula em maiúscula. O uso da referência char& garante que a alteração seja feita na string original, e o resultado é impresso. É a função toupper da biblioteca <cctype> que realiza a conversão.

Alternativa B — ❌ Incorreta

Afirma que o programa converte caracteres em minúsculo. Isso está errado: a função std::toupper converte para maiúsculo. A função que converteria para minúsculo seria std::tolower. A banca inverteu o sentido da conversão para confundir o candidato.

Alternativa C — ❌ Incorreta

Diz que o programa concatena caracteres. Concatenar significa juntar duas ou mais strings ou caracteres em uma só. O código não faz nenhuma junção; ele apenas lê uma string e a modifica caractere por caractere. Não há operador + ou método append sendo utilizado para concatenar.

Alternativa D — ❌ Incorreta

Afirma que o programa conta a quantidade de caracteres em um texto. Para contar caracteres, seria necessário usar o método length() ou size() da classe std::string e armazenar o resultado. O código não faz nenhuma contagem; ele apenas percorre a string para modificar cada caractere.

Alternativa E — ❌ Incorreta

Diz que o programa remove do texto somente os caracteres maiúsculos. O código não remove nenhum caractere; ele apenas converte os minúsculos em maiúsculos. Para remover caracteres, seria necessário usar funções como erase ou construir uma nova string sem os caracteres indesejados. A conversão não remove nada.

Gabarito: letra A

Link permanente: /questoes/qg027834