paulo1205
(usa Ubuntu)
Enviado em 27/11/2018 - 09:37h
Sabe fazer com
arrays (vetores)?
Aliás, antes disso: saberia fazer com um conjunto de cartões, se eles estivessem colocados na sua frente?
Se a sua cabeça funcionar mais ou menos como a minha, se eu tivesse de inverter a ordem de uma fileira de cartões de papel que estivessem alinhados na minha frente, eu começaria trocando, com minhas duas mãos, os cartões da extremidade esquerda e da extremidade da direita, e iria, sucessivamente, trocando os cartões das posições que se aproximassem do centro da fileira, até que minhas mãos se encontrassem (ou se cruzassem) no centro da fileira.
Um
array, e particularmente um que represente uma
string, é um análogo quase exato de uma fileira de cartões (só não é melhor porque você nem sempre sabe de antemão onde está a extremidade final da “fileira” contida na
string). E, sendo esse análogo, você poderia pensar também em o que você poderia usar para representar os papéis de suas mãos, que começam nos extremos, e vão convergindo para o centro.
Para mim, poderiam ser dois índices: um que começa em zero e vai crescendo (movimento da esquerda para o centro), e outro que começa na posição final e vai diminuindo (movimento da direita para o centro).
Agora veja que interessante: se você tem um
array e um índice, você tem uma forma de apontar para um elemento específico do
array.
Opa! Eu disse “apontar”... Sabe o que mais serve para apontar? Pois é: aqueles famigerados e temidos ponteiros — que provavelmente não deveriam ser tão famigerados ou temidos assim.
Aliás, você sabia que, em C, um
array só é tratado como
array em três situações sintáticas específicas e que em todos os outros casos ele é tratado como se fosse ponteiro? Os três casos são o momento de sua declaração e quando o objeto declarado é passado como operando dos operadores unários
& (obtenção de endereço) e
sizeof (cálculo da quantidade de memória ocupada); em todos os demais casos, inclusive quando você usa a forma “
array[indice]”, o
array é tratado como ponteiro. Isso implica necessariamente que você pode fazer “
ponteiro[indice]”, desde que o valor do ponteiro se refira ao elemento (provavelmente o primeiro elemento, que é o que tem índice zero) de um
array.
Com essas dicas, você consegue fazer?