(String) Escreva um programa que mostre uma string na tela pela ordem em que está escrita e pela ordem contrária. DEVE usar apenas apontador para percorrer as strings.
Passo 1
Então, a gente tem um exercício de programação onde precisamos escrever um programa que mostre uma string na tela tanto na ordem em que está escrita quanto na ordem reversa. Vamos usar apenas ponteiros para percorrer as strings. Para resolver isso, vamos precisar entender como funcionam as strings em linguagens como C e como usar ponteiros para navegar por elas.
Passo 2
Primeiro, vamos falar sobre o que é uma string. Em linguagens de programação como C, uma string é basicamente uma sequência de caracteres terminada por um caractere nulo (
'\0'
). Por exemplo, a string “Olá” é armazenada na memória como ‘O’, ‘l’, ‘á’, ‘\0’.Passo 3
Agora, sobre ponteiros. Um ponteiro é uma variável que guarda o endereço de memória de outra variável. No caso das strings, podemos usar um ponteiro para apontar para o primeiro caractere da string e mover esse ponteiro para percorrer cada caractere.
Passo 4
Para mostrar a string na ordem normal, vamos usar um ponteiro que começa no primeiro caractere e vai avançando até encontrar o caractere nulo. A cada passo, a gente imprime o caractere que o ponteiro está apontando.
Passo 5
Para mostrar a string na ordem reversa, precisamos primeiro encontrar o final da string. Podemos fazer isso movendo o ponteiro até chegar ao caractere nulo e depois voltar um passo para ficar no último caractere real. A partir daí, vamos retrocedendo o ponteiro até o início da string, imprimindo cada caractere.
Passo 6
Vamos juntar tudo isso em um código em C. Veja abaixo:
#include <stdio.h>
int main() {
char str[] = "Olá, Mundo!";
char *ptr = str;
char *fim = str;
// Mostra a string na ordem normal
printf("Ordem normal: ");
while(*ptr != '\0') {
printf("%c", *ptr);
ptr++;
}
// Encontra o fim da string
while(*fim != '\0') {
fim++;
}
fim--; // Volta para o último caractere válido
// Mostra a string na ordem reversa
printf("\nOrdem reversa: ");
while(fim >= str) {
printf("%c", *fim);
fim--;
}
return 0;
}
Resposta
Ao executar esse programa, ele vai imprimir:
Ordem normal: Olá, Mundo!
Ordem reversa: !odnuM ,álO