Jump to content

Inverter uma serie de palavras


Ventura
 Share

Recommended Posts

Boa tarde mais uma vez, eu tenho este código

#!/bin/bash
#Vamos inserir uma serie de palavras e ele vai inverter a ordem

res=""

for a in $* #$* uma string que contem todos os argumentos
do
       res="$a $res" #aqui inverte a string
done
echo -e "\n\nO resultado invertido vai ser: $res \nda palavra $*"

Onde eu vou por exemplo escrever

nventura@so:~/bin$ t3-inverte ola portugal a programar

O resultado invertido vai ser: programar a portugal ola

da palavra ola portugal a programar

O que vai inverter as palavras que eu escrevi é esta parte do código? res="$a $res" #aqui inverte a string

Edited by pwseo
tags code, syntax highlight.
Link to comment
Share on other sites

Ventura,

O código parece-me auto-explicativo. Qual é a tua dúvida exactamente? Perceber como acontece a inversão?

Sim, exatamente isso. Aqueles comentários até fui eu que os inseri, mas não consigo perceber como é que aquela linha faz a inversão

Link to comment
Share on other sites

Experimenta fazer isso com papel e caneta.

Vai registando o valor de $res em cada iteração do ciclo e perceberás.

O problema é mesmo esse, não consigo perceber como acontece isso.

Link to comment
Share on other sites

O objectivo é conseguires perceber sem sermos nós a explicar-te isso... até porque é um padrão muito comum em scripts bash

Imagina que invocas o script com os argumentos "programar a portugal olá".

Diz-me qual é o valor de $res em cada iteração do ciclo.

Link to comment
Share on other sites

O objectivo é conseguires perceber sem sermos nós a explicar-te isso... até porque é um padrão muito comum em scripts bash

Imagina que invocas o script com os argumentos "programar a portugal olá".

Diz-me qual é o valor de $res em cada iteração do ciclo.

ciclo 1: olá programar a portugal

ciclo 2: olá portugal programar a

ciclo 3: olá portugal a programar

ciclo 4: olá portugal a programar

É isto que ele faz, correto? Chega a fazer o ciclo 4 ou para no 3?

Link to comment
Share on other sites

Não. Repara, a linha em questão é a seguinte:

$res="$a $res"

Então assume-se que $res inicialmente é "" (está vazio) e que $a é a palavra em questão em cada ciclo:

            $a          $res
    início: --          ""
iteração #1: "programar" "programar "
iteração #2: "a"         "a programar "
iteração #3: "portugal"  "portugal a programar "
iteração #4: "olá"       "olá portugal a programar "

Atenção: o facto de não teres compreendido isto correctamente revela uma lacuna grave nos teus conhecimentos, que deverás tentar reparar logo que possível.

Link to comment
Share on other sites

Não. Repara, a linha em questão é a seguinte:

$res="$a $res"

Então assume-se que $res inicialmente é "" (está vazio) e que $a é a palavra em questão em cada ciclo:

            $a          $res
    início: --          ""
iteração #1: "programar" "programar "
iteração #2: "a"         "a programar "
iteração #3: "portugal"  "portugal a programar "
iteração #4: "olá"       "olá portugal a programar "

Atenção: o facto de não teres compreendido isto correctamente revela uma lacuna grave nos teus conhecimentos, que deverás tentar reparar logo que possível.

Sim, é verdade, tenho grandes dificuldades na linguagem, mas fico muito agradecido pela ajuda.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.