Portal dos Games
Olá, sejá bem vindo (a) ao Portal dos Games, registre-se e faça parte do maior portal de games do mundo.

Participe do fórum, é rápido e fácil

Portal dos Games
Olá, sejá bem vindo (a) ao Portal dos Games, registre-se e faça parte do maior portal de games do mundo.
Portal dos Games
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Você
Carregando avatar...
Olá Convidado,

Você se cadastrou no dia

A sua ultima visita foi em

A sua idade é: 0

Voce ja postou 1 mensagens

Últimos assuntos
» Golaço do goleiro arabe
Scripts em PHP uteis EmptyDom 17 Fev 2013, 8:16 am por Darkmel

» Novas Vagas
Scripts em PHP uteis EmptyDom 17 Fev 2013, 8:02 am por Darkmel

» jogos mortais IV
Scripts em PHP uteis EmptyTer 04 Dez 2012, 4:51 pm por manete

» Planet - RO - Full PvP
Scripts em PHP uteis EmptyQui 12 Jan 2012, 10:12 am por Nagato_Uchiha

» TUXqweqe
Scripts em PHP uteis EmptyQui 05 Jan 2012, 10:29 am por vitao009

Top dos mais postadores
vitao009 (739)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
Kayo Raphael (115)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
Darkmel (58)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
deko009 (47)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
darkmagic (44)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
KamauX (32)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
Ryan (26)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
Matu Game (25)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
LucasSC (11)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 
Yagami (11)
Scripts em PHP uteis Bar_leftScripts em PHP uteis BarScripts em PHP uteis Bar_right 

Dados do fórum
Contador
Contador visita
Page Rank PageRank

Scripts em PHP uteis

Ir para baixo

Tutorial Scripts em PHP uteis

Mensagem por vitao009 Sex 19 Mar 2010, 11:20 am

Código:


<?
/* FUNÇÕES:
-> strtodec($str);
-> dectostr($valor);
-> mdc ($num1, $num);
-> mmc ($string);
-> simp_fr ($n, $d);
-> soma_fr ($n1, $d1, $n2, $d2);
-> dif_fr ($n1, $d1, $n2, $d2);
-> mult_fr ($n1, $d1, $n2, $d2);
-> div_fr ($n1, $d1, $n2, $d2);
-> fatora($num);
-> num_div($num);
-> divisores($num);
-> par_div($num);
-> is_quad($num);
-> dectorom($dec);
-> romtodec($rom);
*/

/* Conjunto de funções que trabalham com o cálculo com letras (a=0, b=1, c=2, etc...)*/
function strtodec ($str="a") {
        // Sepeara os caracteres da string
        for ($i=0; $i<strlen($str); $i++) {
                $char[] = strtolower(substr($str, $i, 1));
        }
        // Transforma letra em número
        $letras = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
        foreach($char as $elemento) {
                for ($i=0; $i<count($letras); $i++) {
                        if ($elemento == $letras[$i])
                                break;
                }
                $num[] = $i;
        }
        // Calcula e retorna o valor
        for ($i=0; $i<count($num); $i++) {
                $expoente = count($num)-1-$i;
                $mult = pow(26, $expoente);
                $valor += $num[$i]*$mult;
        }
        return $valor;
}
function dectostr($valor=0) {
        // Cria uma array com os valores de cada casa
        if ($valor<26) $num[0]=$valor;
        while($valor>25) {
                $quociente = floor($valor/26);
                $resto = $valor%26;
                $num[] = $resto;
                if ($quociente<26) {
                        $num[] = $quociente;
                        break;
                }
                $valor = $quociente;
        }
        // Transforma os números em letras, junta-os e retorna
        $num = array_reverse($num);
        $letras = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
        $str = "";
        foreach($num as $elemento) {
                $str .= $letras[$elemento];
        }
        return $str;
}
/* As duas funções acima servem para trabalhar com base 26, ex:
a+a = 0+0 = 0 = a
g+u+i = 6+19+8 = 33 = bh
gui = gaa+ua+i = 4056+520+8 = 4584
b*c = 1*2 = 2 = c
f/b = 5/1 = 5 = f
z-a = 25-0 = 25 = z
z+b = 25+1 = 26 = ba
bh-ba = 33-26 = 7 = h
*/
// Calcula o mdc de dois números
function mdc ($num1, $num2) {
        $D = max($num1, $num2);
        $r = min($num1, $num2);
        while ($r != 0) {
                $d = $D;
                $D = $r;
                $r = $d%$D;
        }
        return $D;
}
// Calcula o mmc das números organizados em string:
// "n1-n2-n3-n4-...-nn"
function mmc ($string) {
        $num = explode("-", $string);
        $i = 1;
        $r = 1;
        while (array_sum($num) != count($num)) {
                $i++;
                $multiplo = false;
                for ($j=0; $j<count($num); $j++) {
                        if ($num[$j]%$i == 0) {
                                $multiplo = true;
                                $num[$j] /= $i;
                        }
                }
                if ($multiplo) {
                        $r *= $i;
                        $i--;
                }
        }
        return $r;
}
/* Simplifica uma fração, a função deve ser chamada assim:
simp_fr($numerado, $denominador) e retorna
"$numerador/$denominador"*/
function simp_fr ($n, $d) {
        // Transforma o denominador em inteiro
        $temp = strlen($d)-strlen(floor($d));
        $multi = pow(10, $temp);
        $d *= $multi;
        $n *= $multi;
        // Transforma o numerador em inteiro
        $temp = strlen($n)-strlen(floor($n));
        $multi = pow(10, $temp);
        $d *= $multi;
        $n *= $multi;
        // Calcula o mdc através da função mdc
        $mdc = mdc(abs($n), abs($d));
        // Aplica o mdc
        $n /= $mdc;
        $d /= $mdc;
        // Transforma o sinal
        if ($d != abs($d)) {
                $d = -$d;
                $n = -$n;
        }
        // Retorna o resultado
        return $n . "/" . $d;
}
/* Soma duas frções, chame a função assim:
soma_fr ($numerador1, $denominador1, $numerador2, $denominador2);
retorna "$numerador/$denominador"*/
function soma_fr ($n1, $d1=1, $n2, $d2=1) {
        // Simplifica as duas frações
        $fr1 = simp_fr($n1, $d1);
        $fr2 = simp_fr($n2, $d2);
        $temp = explode("/", $fr1);
        $n1 = $temp[0];
        $d1 = $temp[1];
        $temp = explode("/", $fr2);
        $n2 = $temp[0];
        $d2 = $temp[1];
        // Calcula o mmc e reduz ao mesmo denominador
        $mmc = mmc("$d1-$d2");
        $n1 *= $mmc/$d1;
        $n2 *= $mmc/$d2;
        $d = $mmc;
        $n = $n1+$n2;
        // Simplifica o resultado e retorna
        return simp_fr($n, $d);
}
/* Subtrai duas frções, chame a função assim:
dif_fr ($numerador1, $denominador1, $numerador2, $denominador2);
retorna "$numerador/$denominador"*/
function dif_fr ($n1, $d1=1, $n2, $d2=1) {
        // Simplifica as duas frações
        $fr1 = simp_fr($n1, $d1);
        $fr2 = simp_fr($n2, $d2);
        $temp = explode("/", $fr1);
        $n1 = $temp[0];
        $d1 = $temp[1];
        $temp = explode("/", $fr2);
        $n2 = $temp[0];
        $d2 = $temp[1];
        // Calcula o mmc e reduz ao mesmo denominador
        $mmc = mmc("$d1-$d2");
        $n1 *= $mmc/$d1;
        $n2 *= $mmc/$d2;
        $d = $mmc;
        $n = $n1-$n2;
        // Simplifica o resultado e retorna
        return simp_fr($n, $d);
}
/* Função que multiplica duas frações, chame-a assim:
mult_fr ($numerador1, $denominador1, $numerador2, $denominador2);
retona "$numerador/$denominador"*/
function mult_fr ($n1, $d1=1, $n2, $d2=1) {
        // Simplifica as duas frações
        $fr1 = simp_fr($n1, $d1);
        $fr2 = simp_fr($n2, $d2);
        $temp = explode("/", $fr1);
        $n1 = $temp[0];
        $d1 = $temp[1];
        $temp = explode("/", $fr2);
        $n2 = $temp[0];
        $d2 = $temp[1];
        // Multiplica os numeradores e denominadores
        $n = $n1*$n2;
        $d = $d1*$d2;
        // Simplifica e retorna o resultado
        return simp_fr($n, $d);
}
/* Função que divide duas frações, chame-a assim:
div_fr ($numerador1, $denominador1, $numerador2, $denominador2);
retona "$numerador/$denominador"*/
function div_fr ($n1, $d1=1, $n2, $d2=1) {
        // Inverte, multiplica e retorna o resultado
        return mult_fr($n1, $d1, $d2, $n2);
}
// Fatora um número natural e retorna "base1-expoente1-base2-expoente2...-basen-expoenten"
// Ex.: fatora(12) retorna "2-2-3-1" que significa que 12 = 2²*3¹ (dois ao quadrado vezes 3)
function fatora($num) {
        $i = 1;
        $ant = 1;
        if ($num == 1) {
                return "1-1";
        } else if ($num == 0) {
                return  "0-1";
        }
        while($num != 1) {
                $i++;
                if ($num%$i == 0) {
                        if ($i == $ant) {
                                $exp[count($exp)-1]++;
                        } else {
                                $exp[] = 1;
                                $bases[] = $i;
                        }
                        $num /= $i;
                        $ant = $i;
                        $i--;
                }
        }
        // Transforma as arrays em strings
        for ($i=0; $i<count($exp); $i++) {
                $result .= $bases[$i] . "-" . $exp[$i] . "-";
        }
        $result = substr($result, 0, strlen($result)-1);
        return $result;
}
// Calcula o número de divisores positivos de um número natural
function num_div ($num) {
        $fatores = fatora($num);
        $fatores = explode("-", $fatores);
        $result = 1;
        for ($i=1; $i<count($fatores); $i+=2) {
                $result *= $fatores[$i]+1;
        }
        return $result;
}
// Determina todos os divisores positivos de um natural e retorna "div1-div2-div3...-divn"
// Ex.: divisores(12) -> "1-2-3-4-6-12"
function divisores($num) {
        $fatora = fatora($num);
        $fatora = explode("-", $fatora);
        for ($i=1; $i<count($fatora); $i+=2) {
                for ($j=0; $j<$fatora[$i]; $j++) {
                        $fatores[] = $fatora[$i-1];
                }
        }
        $divisores = array(1, $fatores[0]);
        $ant = $fatores[0];
        $nant = 1;
        for ($i=1; $i<count($fatores); $i++) {
                $atu = $fatores[$i];
                if ($ant == $atu) {
                        $inicio = count($divisores)-$nant;
                } else {
                        $inicio = 0;
                }
                $fim = count($divisores);
                $nant = $fim-$inicio;
                for ($j=$inicio; $j<$fim; $j++) {
                        $divisores[] = $divisores[$j]*$atu;
                }
                $ant = $atu;
        }
        sort($divisores);
        $result = join("-", $divisores);
        return $result;
}
// Retorna uma array com os pares de divisores que multiplicados deêm o número
// Ex.: par_div(12) -> array("1-12", "2-6", "3-4")
// Ex2.: par_div(16) -> array("1-16", "2-8", "4-4")
function par_div ($num) {
        $divisores = divisores($num);
        $divisores = explode("-", $divisores);
        $max = count($divisores)%2==0 ? count($divisores)/2 : (count($divisores)+1)/2;
        for ($i=0; $i<$max; $i++) {
                $result[] = $divisores[$i] . "-" . $divisores[count($divisores)-$i-1];
        }
        return $result;
}
// Determina se um natural é quadrado perfeito
function is_quad ($num) {
        if (num_div($num)%2 == 0) {
                return "false";
        } else {
                return "true";
        }
}
// Transforma um número natural em número romano
function dectorom ($dec) {
        if ($dec<0) {
                return '';
        }
        $dec = (int) $dec;
        $digit  = (int) ($dec / 1000);
        $dec -= $digit * 1000;
        while ($digit > 0) {
                $rom .= 'M';
                $digit--;
        }
        $a = array("I", "X", "C", "M");
        $b = array("V", "L", "D");
        $c = array("", "a", "aa", "aaa", "ab", "b", "ba", "baa", "baaa", "ac");
        for ($i=0; $i<strlen($dec); $i++) {
                $j = strlen($dec)-$i-1;
                $va = $a[$j];
                $vb = $b[$j];
                $você = $a[$j+1];
                $trans = array("a" => $va, "b" => $vb, "c" => $você);
                $str = $c[substr($dec, $i, 1)];
                $rom .= strtr($str, $trans);
        }
        return $rom;
}
// Transforma um número romano em natural
function romtodec ($rom) {
        $rom = strtoupper($rom);
        $trans = array("M" => 1000, "D" => 500, "C" => 100, "L" => 50, "X" => 10, "V" => 5, "I" => 1);
        $anterior = 1001;
        for ($i=0; $i<strlen($rom); $i++) {
                $atual = strtr(substr($rom, $i, 1), $trans);
                if ($atual>$anterior) {
                        $dec -= 2*$anterior;
                }
                $dec += $atual;
                $anterior = $atual;
        }
        return $dec;
}
?>

vitao009
vitao009
Administrador
Administrador

Mensagens : 739
VicPontos : 164624
Moedas : 1023
Data de inscrição : 22/12/2009
Idade : 26
Localização : Santa Isabel SP
Pet : Scripts em PHP uteis Neopets_112

https://vicforumvic.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos