(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
Exercícios relacionados
Leia um número N inteiro. Calcule sua raiz INTEIRA. Exemplo:
, raiz inteira
.
Crie um algoritmo que:
a) Leia a idade de várias pessoas. O final da lista contém o valor da idade igual a -1 que deverá ser computado.
b) Calcule e mostre a idade média desse grupo de indivíduos. Escreva também a porcentagem de pessoas entre 21 e 65 anos inclusive.
a) Leia a idade de várias pessoas. O final da lista contém o valor da idade igual a -1 que deverá ser computado.
b) Calcule e mostre a idade média desse grupo de indivíduos. Escreva também a porcentagem de pessoas entre 21 e 65 anos inclusive.
(Recursividade) Escreva uma função recursiva que produza o reverso de um string, reverse(char s[])
(Matriz) Escreva um programa que armazene 9 valores para uma matriz
gerados aleatoriamente, os valores devem ser menores que 100. (1) Calcule a soma dos elementos (2) Retorne a quantidade acima do valor 50 .
A função rand() devolve um número entre os limites mencionados.
A função rand() parte da mesma semente para realizar o cálculo dos números aleatórios.
Para variar a semente, é usado um valor gerado através do relógio do computador.
A função rand() devolve um número entre os limites mencionados.
A função rand() parte da mesma semente para realizar o cálculo dos números aleatórios.
Para variar a semente, é usado um valor gerado através do relógio do computador.