[AJUDA] Bash - vetores

1. [AJUDA] Bash - vetores

Leonardo Kulik Perle
leokulik

(usa Debian)

Enviado em 07/11/2014 - 10:33h

Bom dia, pessoal.
Conseguem me dar uma luz para este exercicio?

crie um script que gera, para um valor n>=0 fornecido pelo usuário, um “quadrado” de 'n' linhas e 'n' ’:’ nas posições da diagonal principal e os caracteres '+' nas demais posições. Por exemplo, se o usuário digitar 5 (n=5) o programa deve gerar 5 linhas e 5 colunas, o ':' na diagonal crescente:

:++++
+:+++
++:++
+++:+
++++:



___________________________________________

To começando, mas não sei como farei pra imprimir desta forma

#!/bin/bash
echo "digite n:"
read num
vetor=${#num[@]}
for (( i >= 0; i < $num; i++ ))
do
':'=${vetor[$i]}
for (( j >= 0; j < $num ; j++ ))
done
${vetor[$i} ++
done
....


  


2. Re: [AJUDA] Bash - vetores

Leonardo Kulik Perle
leokulik

(usa Debian)

Enviado em 07/11/2014 - 15:53h

ALGUÉÉÉÉM?????


3. Re: [AJUDA] Bash - vetores

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/11/2014 - 17:10h

Assim dá certo, mas tente entender a lógica que eu usei:


#!/bin/bash

export count="0"

home()
{
clear
echo
echo -n "Digite um número: "
read num

if [ $num -lt "0" ]
then
echo
echo "Número inválido"
echo
sleep 1
home;
else
export i=$num
export j=$num
vetor;
fi
}

vetor()
{
for i2 in `seq $i`
do
export count=$((count+1))
for j2 in `seq $j`
do
if [ $j2 -eq $count ]
then
echo -n ":"
else
echo -n "+"
fi
done
echo
done
}

home;




4. Re: [AJUDA] Bash - vetores

Paulo
paulo1205

(usa Ubuntu)

Enviado em 07/11/2014 - 17:29h

Leia a documentação do Bash (“man bash”) e tente aprender a usar a sintaxe abaixo.

for (( expressao_inicial; expressao_condicional; expressao_de_repeticao )); do
comandos_repetidos
done



Por exemplo, o código

for (( i=0; i<n; i++ )); do
echo -n +
done
echo


vai imprimir o sinal de mais n vezes, desde que n seja um número inteiro não-negativo. Essa sintaxe produz desempenho melhor do que o que foi mostrado com o comando seq.


5. Re: [AJUDA] Bash - vetores

Leonardo Kulik Perle
leokulik

(usa Debian)

Enviado em 07/11/2014 - 17:42h

unnslacker escreveu:

Assim dá certo, mas tente entender a lógica que eu usei:


#!/bin/bash

export count="0"

home()
{
clear
echo
echo -n "Digite um número: "
read num

if [ $num -lt "0" ]
then
echo
echo "Número inválido"
echo
sleep 1
home;
else
export i=$num
export j=$num
vetor;
fi
}

vetor()
{
for i2 in `seq $i`
do
export count=$((count+1))
for j2 in `seq $j`
do
if [ $j2 -eq $count ]
then
echo -n ":"
else
echo -n "+"
fi
done
echo
done
}

home;



executando:
+:+++
++:++
+++:+
++++:

preciso que o ':' comece na posição 0 do vetor..

entendi sua lógica, valeeeeeeeeu..
se puder, só me explica o que é o home() e vetor() por favor.



6. Re: [AJUDA] Bash - vetores

Leonardo Kulik Perle
leokulik

(usa Debian)

Enviado em 07/11/2014 - 17:49h

paulo..
assim?
#!/bin/bash
echo "digite n:"
read num
if [ $num -lt 0 ]; then
echo "Numero inválido"
else
export i=$num
export j=$num
fi
for (( i >= 0; i < $num; i++ ))
do
echo -n +
done
if [ $j -eq $num ]; then
echo -n ":"
else
echo -n "+"
fi



Tenho dificuldade de ajeitar a sintaxe.. :((((




7. Re: [AJUDA] Bash - vetores

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/11/2014 - 17:49h

home() e vetor() são apenas funções para organizar o código, para que você possa chamá-los de onde quiser e sempre que precisar (é um bloco de código para "evitar repetições");

Um detalhe: no exemplo que você citou


+:+++
++:++
+++:+
++++:


está errado, já que temos 4 linhas e 5 colunas, e não 5 linhas e 5 colunas;

Tente fazer o teste novamente; o programa deve retornar isso:


:++++
+:+++
++:++
+++:+
++++:



8. Re: [AJUDA] Bash - vetores

Paulo
paulo1205

(usa Ubuntu)

Enviado em 07/11/2014 - 17:59h

Você já programou em alguma linguagem?

Mais do que eu disse acima, só se eu fizer tudo o que tem para fazer. Como eu considero extremamente anti-ético não apenas pedir, mas também dar resposta pronta, não posso lhe dizer mais muita coisa além do que já foi dito.


9. Re: [AJUDA] Bash - vetores

Leonardo Kulik Perle
leokulik

(usa Debian)

Enviado em 07/11/2014 - 18:05h

conseguimos glr..
vlwww!!!


#!/bin/bash
clear
echo
echo -n "Digite um número: "
read num

if [ $num -lt "0" ]
then
echo
echo "Número inválido"
else
export i=$num
export j=$num
fi
for i2 in `seq $i`
do
export count=$(((count-1)+1))
for j2 in `seq $j`
do
if [ $j2 -eq $count ]
then
echo -n "+"
else
echo -n ":"
fi
done
echo
done



10. Re: [AJUDA] Bash - vetores

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/11/2014 - 18:25h

Bom que conseguiu, com o tempo você vai se acostumando e se "aprimorando" no shell, desde que pratique sempre e tenha "vontade" de aprender; agradeço também ao Paulo pelo apoio, mas não acho que fui antiético (sim, você não me mencionou, mas deu a entender que foi pra mim - peço desculpas se estiver errado) - ele parece ter se esforçado antes de vim pedir aqui, então não acho injusto vir aqui e por a minha "possível" resolução - eu simplifiquei o código e deixei mais organizado para facilitar no seu entendimento, e para que o amigo que estava com a dúvida pudesse adaptá-lo mais facilmente.


11. Re: [AJUDA] Bash - vetores

Paulo
paulo1205

(usa Ubuntu)

Enviado em 07/11/2014 - 18:50h

Não foi para você. Foi para mim mesmo, porque eu estava me coçando para dar uma resposta que não usava o seq (mesmo quando uso scripts em shell, eu procuro evitar ao máximo comandos externos).


12. Re: [AJUDA] Bash - vetores

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/11/2014 - 20:58h

paulo1205 escreveu:

Não foi para você. Foi para mim mesmo, porque eu estava me coçando para dar uma resposta que não usava o seq (mesmo quando uso scripts em shell, eu procuro evitar ao máximo comandos externos).


Beleza ;)

Também não gosto muito de usar comandos externos quando uso shell, isso evita "conflitos" no código (as vezes dá erro não no seu código, mas no programa externo que você utilizou no código). Mas nesse caso foi "um pouco" necessário;



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts