11 - Escreve um programa que solicite ao utilizador uma string e a volte a mostrar no ecrã de forma invertida (isto é, de trás para a frente).
// Declarar varáveis
string str;
// Pedir ao user a frase
Console.WriteLine("Escreva uma frase para inverte-la:");
// Variável recebe input da frase
str = Console.ReadLine();
// Ciclo FOR que percorre do último até ao primeiro caractere
for (int i = str.Length - 1; i >= 0; i--)
{
// Output de todos os caracteres numa só linha
Console.Write(str[i]);
}
Console.WriteLine(); // Linha separada por nova linha
Na linha 11 do código for (int i = str.Length - 1; i >= 0; i--)
, o valor da
variável i
inicia-se com o tamanho da string fornecida pelo utilizador
subtraído por 1. Como a string deve ser invertida, essa variável irá ser decrementada
até 0.
Isso porque, a linha seguinte que encontra-se dentro do loop, trata a string como um array de carateres exibindo-os individualmente na ordem inversa. Ora, como é de conhecimento, a numeração dos índices dos arrays iniciam-se sempre por zero: Por exemplo, na palavra "Linguagem", o caráter "L" corresponde ao índice 0, o caráter "i" corresponde ao índice 1, e assim por diante.
Dessa forma, o índice do último caráter que, na inversão, deve ser o primeiro a ser exibido, irá corresponder ao tamanho da string subtraído por 1. No exemplo referido, a palavra "Linguagem" possui o tamanho de 9 carateres. Quando tratada como um array, o último caráter (a letra "m") será o elemento de índice 8.
Assim, o loop for
irá percorrer de forma decrescente todos os carateres
da string, a iniciar pelo último até ao primeiro (índice 0), em respeito à condição
de que a variável i
seja maior ou igual à 0.
Por Lucas Viana
Nota do docente: Embora esta solução esteja tecnicamente correta, não é a solução pretendida nesta fase, pois ainda não discutimos as funções/métodos usadas na mesma.
// Variável (s).
string s = Console.ReadLine(); // Lê o input do utilizador.
// Variável (arr).
char[] arr = s.ToCharArray(); // Converte o string para um array de carateres.
Array.Reverse(arr); // Reverte o array (arr) utilizando a função 'Reverse'.
Console.WriteLine(arr); // Escreve o resultado invertido.
- Por Inácio Amerio, solução baseada nesta referência.