Faça uma função que dado um caractere qualquer retorne o mesmo caractere sempre em maiúsculo.
Passo 1
A questão pede uma função que receba um caractere qualquer e devolva o mesmo caractere em maiúsculo, portanto o conteúdo é manipulação de caracteres via tabela ASCII.
Passo 2
Na tabela ASCII, as letras minúsculas (‘a’ a ‘z’) estão em sequência e têm códigos maiores que as maiúsculas (‘A’ a ‘Z’) por um valor fixo de 32. Ou seja, para converter uma letra minúscula em maiúscula basta subtrair 32 do seu código.
Passo 3
O algoritmo geral é: verificar se o caractere está entre ‘a’ e ‘z’. Se estiver, converter usando a diferença entre ‘a’ e ‘A’. Caso contrário, retornar o caractere original sem alteração.
Passo 4
Implementar em C a função que faz essa verificação e conversão. A função deve receber um único caractere e retornar outro caractere.
Resposta
char to_upper(char c) {
if (c >= ‘a’ && c <= ‘z’) {
return c - (‘a’ - ‘A’);
}
return c;
}
if (c >= ‘a’ && c <= ‘z’) {
return c - (‘a’ - ‘A’);
}
return c;
}