Raiz Quadrada (Square Root) para Bash

Publicado por Sergio Spoladore 06/11/2006

[ Hits: 9.330 ]

Homepage: http://yetlinux.blogspot.com

Download sqrt.sh




Este raro script calcula a raiz quadrada de um número natural entre 0 e 2^63 - 1. Caso ultrapasse este valor, haverá erro de cálculo. Creio ter corrigido todos os bugs. Serve como exercício de programação.

Deixo que vocês o compreendam.

  



Esconder código-fonte

#!/bin/bash 

verif (){
   str1="$1"
   [[ -z "$str1" ]] && {
      echo "Use $0 <numero>";
      echo "<numero> entre 0 e 9223372036854775807.";
      echo "Caso ultrapasse, havera erro de calculo.";
      exit 1;
   }

   str2=${str1//[0123456789]/}
   [[ -n "$str2" ]] && {
      echo "Use somente digitos de 0 a 9." 
      exit 1;
   }

}

cortazero(){
   a1=$1;
   while [ "$a1" != "$b1" ]; do
      b1=$a1;
      a1=${a1##0};
   done;
   echo $a1;
}

sqrt(){
   tmp1=$1;
   [[ $((${#tmp1}%2)) -eq 1 ]] && tmp1='0'$tmp1;
   j=0;
   rq='0';
   rt='';

   while [ -n "${tmp1:$j:2}" ]; do
      rt=$rt${tmp1:$j:2};
      rt=`cortazero $rt`;
      [[ -z "$rt" ]] && rt='0';
      rq=`cortazero $rq`;
      [[ -z "$rq" ]] && rq='0';   
      for ((i=1;i<=10;i++));do
         [[ $rt -lt $(( (`cortazero $((2*$rq))`$i) *$i)) ]] && { 
            rt=$((rt-(`cortazero $((2*$rq))`$((i-1)))*$((i-1))));
            rq=$rq$((i-1));
            break;
         }
      done;
      let j+=2;
   done;
   rq=`cortazero $rq`;
   [[ -z "$rq" ]] && rq='0';
   echo $rq;
}

verif $1;
sqrt $1;


Scripts recomendados

Atualizando /home dos usuários em rede.(GNOME)

Liberação do servidor DNS no firewall

Script para controle do Squid e firewall

Limpeza de Cache no Squid

Instalando a última versão estável do Eclipse com uma única linha


  

Comentários
[1] Comentário enviado por viniciuspgomes em 20/09/2007 - 10:06h

Como calculo a raíz quadrada sem desprezar os valores decimais..
Tem como alterar isso no seu código?
abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts