Calculeiras

1. Calculeiras

Jarno Trulli
Jarnotrulli

(usa Slackware)

Enviado em 08/10/2005 - 20:13h

Que tal postar aqui uns shellscripts só para fazer alguns cálculos (por mais imbecis e inúteis que possam parecer)? O pré-requisito para colocar um script aqui seria "fazer algum cálculo" em shellscript.



  


2. Fatorial em Bash

Jarno Trulli
Jarnotrulli

(usa Slackware)

Enviado em 08/10/2005 - 20:14h

Pra começar, um que simplesmente calcula o fatorial do número digitado pelo usuário (claro, falta código de proteção para erros...)

#-----------
#Arquivo fatorial.sh
#By Jarnotrulli - Quem souber do
#original me avise!
#

echo "Digite o numero:_"
read NUM

seq 1 1 $NUM|paste -sd'*'|bc
#Alternativa:
#seq 1 1 $NUM -d'*'|bc

E é só rodar com um:
$ bash fatorial.sh


3. bc

Israel Mendonça
PCMasterPB

(usa Suse)

Enviado em 22/10/2005 - 21:13h

Estava um dia lendo um artigo aqui no vol sobre este comando e fiz um script pq tava curioso, não é a oitava maravilha em shell, mas:

#!/bin/bash

a=123456789
b=987654321
c=$a+$b
d=$a*$b
e=$b/$a
f=$a^2
g=$b^2
h="sqrt($b)"
i="((((($a+$b)*($a)*($b))^2)^8)^8)^8" ## Isso é {[({[(a+b)*(a)*(b)]^2}^8)^8]}^8
## j="sqrt($i)"

echo $a
echo $b
echo $c | bc
echo $d | bc
echo $e | bc
echo $f | bc
echo $g | bc
echo "scale=7;$h" | bc
echo "scale=8;$h" | bc
echo "scale=9;$h" | bc
echo "scale=10;$h" | bc
echo "scale=11;$h" | bc
echo "scale=12;$h" | bc
echo "scale=20;$h" | bc
echo "scale=40;$h" | bc
echo "scale=60;$h" | bc
echo $h | bc
echo $i | bc

Salve com um nome e torne ele executável. A variável i é um número enorme.Para ver isso tudo em um arquivo texto:

./nome_do_script > /home/usuario/arquivo_texto

Falta fazer ele inserir uma linha em branco entre cada número para ser melhor visualizado, mas com esse já da pra ter uma idéia do comando bc.


4. bc

Israel Mendonça
PCMasterPB

(usa Suse)

Enviado em 22/10/2005 - 21:20h

Ah, esqueci de dizer, onde tem sqrt ele calcula a raiz quadrada, o onde tem scale, é pra dizer com quantas casas decimais a variável deve sair.


5. script refeito

Israel Mendonça
PCMasterPB

(usa Suse)

Enviado em 29/10/2005 - 16:23h

Bom, como disse o script mostrava os resultados tudo junto, ae refiz ele e agora entre um resultado e outro tem uma linha, veja ae o script refeito:

#!/bin/bash

a=123456789
b=987654321
c=$a+$b
d=$a*$b
e=$b/$a
f=$a^2
g=$b^2
h="sqrt($b)"
i="((((($a+$b)*($a)*($b))^2)^8)^8)^8"

echo $a
echo -e "\n"
echo $b
echo -e "\n"
echo $c | bc
echo -e "\n"
echo $d | bc
echo -e "\n"
echo $e | bc
echo -e "\n"
echo $f | bc
echo -e "\n"
echo $g | bc
echo -e "\n"
echo "scale=7;$h" | bc
echo -e "\n"
echo "scale=8;$h" | bc
echo -e "\n"
echo "scale=9;$h" | bc
echo -e "\n"
echo "scale=10;$h" | bc
echo -e "\n"
echo "scale=11;$h" | bc
echo -e "\n"
echo "scale=12;$h" | bc
echo -e "\n"
echo "scale=20;$h" | bc
echo -e "\n"
echo "scale=40;$h" | bc
echo -e "\n"
echo "scale=60;$h" | bc
echo -e "\n"
echo $h | bc
echo -e "\n"
echo $i | bc
echo -e "\n"


6. Re: Calculeiras

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 02/08/2007 - 19:50h

Gostei!
Detalhe: este aqui só usa BASH mesmo, sem binários...

F=5
fat=1
N=1
while (($N <= $F))
do
fat=$(( $fat * $N ))
let N="$N +1"
done

echo Fatorial de $F = $fat

Tá, tá bom... o echo é um binário :-D
$ which echo
/bin/echo




7. outro fatorial

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 18/11/2007 - 20:21h

FAT=30
seq -s '*' 1 $FAT|bc

Quer tentar com 3000? Sim, ele faz:

FAT=3000
seq -s '*' 1 $FAT|bc

Fatorial de 10mil? Sim, levou 4s em meu hardware e me retornou um número com aprox 36 mil digitos (alguém pode testar o resultado na calculadora do Windows? Só pra ver se o bc fez certo...)


8. tambem calculei aqui de 10mil

Everson Caratti
eversoncaratti

(usa Ubuntu)

Enviado em 09/10/2011 - 18:05h

everson.~$ time seq -s '*' 1 10000|bc | wc
525 525 36709

real 0m2.333s
user 0m2.312s
sys 0m0.012s



9. Re: Calculeiras

André
andrezc

(usa Debian)

Enviado em 09/10/2011 - 18:25h

Por que diabos alguém ressuscita um tópico cuja última postagem é de 2007?


10. Fenix

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 09/10/2011 - 18:34h

andrezc escreveu:

Por que diabos alguém ressuscita um tópico cuja última postagem é de 2007?


Porque ele o leu agora e isto é que é legal do VOL.

Além do mais, já que eu e tu estarmos lendo o tópico, este fato justifica a sua "ressurreição" :-D






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts