Jump to content
Fórum Script Brasil
  • 0

Valor Por Extenso


babaloricha
 Share

Question

Ola galera gostaria de saber se alguém tem uma função que escreva um numero por extenso.

de preferencia js , mas pode ser em outra linguagem! mas também que tebnha todas as funcões definidas, pois já peguie algumas mas que tinham funcoes que eram nativas da linguagem, que eu não entendo logo no consigo passar para js!

Eu já fiz uma mas ela tem problemas co 11 12 .... 19.

dez de já grato

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

ai vai a bucha! o programa e bem simples pos não faco questao de ponto nem virgula nem nada mas o defeito por enquanto e o numero 11!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<script language="javascript">
//esse codigo so funciona no ff  :(
var extenso=new Array();
extenso[0]= {numero:1,escrita:'um'};
extenso[1]= {numero:2,escrita:'dois'};
extenso[2]= {numero:3,escrita:'tres'};
extenso[3]= {numero:4,escrita:'quatro'};
extenso[4]= {numero:5,escrita:'cinco'};
extenso[5]= {numero:6,escrita:'seis'};
extenso[6]= {numero:7,escrita:'sete'};
extenso[7]= {numero:8,escrita:'oito'};
extenso[8]= {numero:9,escrita:'nove'};
extenso[9]= {numero:10,escrita:'dez'};
extenso[10]= {numero:11,escrita:'onze'};
extenso[11]= {numero:12,escrita:'doze'};
extenso[12]= {numero:13,escrita:'treze'};
extenso[13]= {numero:14,escrita:'quatorze'};
extenso[14]= {numero:15,escrita:'quinze'};
extenso[15]= {numero:16,escrita:'dezeseis'};
extenso[16]= {numero:17,escrita:'dezesete'};
extenso[17]= {numero:18,escrita:'dezoito'};
extenso[18]= {numero:19,escrita:'dezenove'};
extenso[19]= {numero:20,escrita:'vinte'};
extenso[20]= {numero:30,escrita:'trinta'};
extenso[21]= {numero:40,escrita:'quarenta'};
extenso[22]= {numero:50,escrita:'cinquenta'};
extenso[23]= {numero:60,escrita:'secenta'};
extenso[24]= {numero:70,escrita:'setenta'};
extenso[25]= {numero:80,escrita:'oitenta'};
extenso[26]= {numero:90,escrita:'noventa'};
extenso[27]= {numero:100,escrita:'cem'};
extenso[28]= {numero:200,escrita:'duzentos'};
extenso[29]= {numero:300,escrita:'trezentos'};
extenso[30]= {numero:400,escrita:'quatrocentos'};
extenso[31]= {numero:500,escrita:'quinhentos'};
extenso[32]= {numero:600,escrita:'seiscentos'};
extenso[33]= {numero:700,escrita:'setecentos'};
extenso[34]= {numero:800,escrita:'oitocentos'};
extenso[35]= {numero:900,escrita:'novecentos'};


function conta(){// funcao que  trasforma conteudo numerico escrito por extenso
    var valores= new Array();
    var a;
    a=document.getElementById("camp").value;
    unid=a.length - 1;
    for(var expo=0,unid;unid>=0;unid--,expo++){
         if(1==a[a.length-2] && a[unid]==1){//tratando 11 12 13....19
                valores[unid]=extenso[a[unid]+a[unid+1]-0-1].escrita; //-0 garente que o dado e numerico
                valores[unid+1]="";
        }
        else{    
            for(l=0;l<=35;l++){
                if(extenso[l].numero ==a[unid]*expoent(expo))
                    valores[unid]=extenso[l].escrita;
            }
        }
    }
    b=document.getElementsByTagName("table");
    b[0].rows[0].cells[1].textContent=formata(valores);    
}
function expoent(v){
    var mult=1;
    if(v==3)
        return mult;
    for(v;v>0;v--)
        mult=mult*10;
    return mult;
}
function formata(v){
    var porExtenso;
    var e=" e ";
    switch(v.length){
        case 1:porExtenso=v[0];
        break;
        case 2:porExtenso=v[0]+e+v[1];
        break;
        case 3:porExtenso=v[0]+e+v[1]+e+v[2];
        break;
        case 4:porExtenso=v[0]+" mil "+v[1]+e+v[2]+e+v[3];
        break;
        default:porExtenso="Erro";
        break;        
    }
    if(porExtenso[porExtenso.length-1]==" ")
        porExtenso=porExtenso.substr(0,porExtenso.length -2);
    return porExtenso;
}
</script>
<body>
<input type="text" size="10" id="camp" /><input type="button" onclick="conta()" />
<table>
    <tr>
        <td>por extenso:</td><td>aaaaaaaaaaaaa</td>
    </tr>
</table>
</body>
</html>

ta ai!

aceito todas as sugestoes :P

Link to comment
Share on other sites

  • 0

babaloricha,

copiei o codigo que você postou ai em cima,

e não funcionou nem com 11, nem com 1, nem com numero nenhum. hehehe

postou o codigo certo!? hehehe

at,

---

agora que eu vi o teu comentario dentro do codigo dizendo que só funciona no FF.

veja, eu não deixei o codigo pronto e redondo não.

apenas dei uma lapidada para funcionar o numero 11. hehe

ah! e deixei funcionando no FF e IE.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>teste</title>
</head>

<script language="javascript">
var extenso = new Array();

extenso[0] = {numero:1,escrita:'um'};
extenso[1] = {numero:2,escrita:'dois'};
extenso[2] = {numero:3,escrita:'tres'};
extenso[3] = {numero:4,escrita:'quatro'};
extenso[4] = {numero:5,escrita:'cinco'};
extenso[5] = {numero:6,escrita:'seis'};
extenso[6] = {numero:7,escrita:'sete'};
extenso[7] = {numero:8,escrita:'oito'};
extenso[8] = {numero:9,escrita:'nove'};
extenso[9] = {numero:10,escrita:'dez'};
extenso[10]= {numero:11,escrita:'onze'};
extenso[11]= {numero:12,escrita:'doze'};
extenso[12]= {numero:13,escrita:'treze'};
extenso[13]= {numero:14,escrita:'quatorze'};
extenso[14]= {numero:15,escrita:'quinze'};
extenso[15]= {numero:16,escrita:'dezeseis'};
extenso[16]= {numero:17,escrita:'dezesete'};
extenso[17]= {numero:18,escrita:'dezoito'};
extenso[18]= {numero:19,escrita:'dezenove'};
extenso[19]= {numero:20,escrita:'vinte'};
extenso[20]= {numero:30,escrita:'trinta'};
extenso[21]= {numero:40,escrita:'quarenta'};
extenso[22]= {numero:50,escrita:'cinquenta'};
extenso[23]= {numero:60,escrita:'secenta'};
extenso[24]= {numero:70,escrita:'setenta'};
extenso[25]= {numero:80,escrita:'oitenta'};
extenso[26]= {numero:90,escrita:'noventa'};
extenso[27]= {numero:100,escrita:'cem'};
extenso[28]= {numero:200,escrita:'duzentos'};
extenso[29]= {numero:300,escrita:'trezentos'};
extenso[30]= {numero:400,escrita:'quatrocentos'};
extenso[31]= {numero:500,escrita:'quinhentos'};
extenso[32]= {numero:600,escrita:'seiscentos'};
extenso[33]= {numero:700,escrita:'setecentos'};
extenso[34]= {numero:800,escrita:'oitocentos'};
extenso[35]= {numero:900,escrita:'novecentos'};

function expoent(v){
    var mult = 1;
    
    if ( v == 3 ) return mult;
        
    for ( v; v > 0; v-- ) mult = mult*10;
        
    return mult;
}

function formata(v,a){
    var porExtenso;
    var e = " e ";    
    
    alert(v);
    switch( v.length ) {
        case 1: porExtenso = v[0]; break;
        case 2: if ( eval(a) < 21 ) { porExtenso = v[0]; } else { porExtenso = v[0]+e+v[1]; } break;
        case 3: porExtenso = v[0]+e+v[1]+e+v[2]; break;
        case 4: porExtenso = v[0]+" mil "+v[1]+e+v[2]+e+v[3]; break;
        default:porExtenso = "Erro"; break;        
    }
    
    if ( porExtenso[porExtenso.length-1] == " " )
        porExtenso = porExtenso.substr(0,porExtenso.length -2);
        
    return porExtenso;
}

function conta() {
    var valores = new Array();
    var a = document.getElementById("camp").value;
    
    unid = a.length - 1;
    for( var expo = 0, unid; unid >= 0; unid--, expo++ ) {
        if ( 1 == a[a.length-2] && a == 1) {
            valores[unid] = extenso[a-1].escrita;
            valores[unid+1] = "";
        } else {
            for ( l=0; l <= 35; l++ ) {
                if ( extenso[l].numero == eval(a) ) {
                    valores[unid] = extenso[l].escrita;
                }
            }
        }
    }
    
    document.getElementById("escreve").innerHTML = formata(valores,a);    
}
</script>
<body>

<input type="text" size="10" id="camp" name="camp">
<input type="button" value="transforma" onclick="java script:conta();">
<table>
    <tr>
        <td>por extenso:</td>
        <td><div id="escreve">aaaaaaaaaaaaa</div></td>
    </tr>
</table>

</body>
</html>

agora é contigo, termina ai. :)

at+

Link to comment
Share on other sites

  • 0

Opa terminei!

bompra quem quiser testar do jeito que o mestre sam colocou ta melhor mas prp que eu preciso não posso usa getElementsById

mas ta ai!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<script language="javascript">
//esse codigo so funciona no ff  :(
var extenso=new Array();
extenso[0]= {numero:1,escrita:'um'};
extenso[1]= {numero:2,escrita:'dois'};
extenso[2]= {numero:3,escrita:'tres'};
extenso[3]= {numero:4,escrita:'quatro'};
extenso[4]= {numero:5,escrita:'cinco'};
extenso[5]= {numero:6,escrita:'seis'};
extenso[6]= {numero:7,escrita:'sete'};
extenso[7]= {numero:8,escrita:'oito'};
extenso[8]= {numero:9,escrita:'nove'};
extenso[9]= {numero:10,escrita:'dez'};
extenso[10]= {numero:11,escrita:'onze'};
extenso[11]= {numero:12,escrita:'doze'};
extenso[12]= {numero:13,escrita:'treze'};
extenso[13]= {numero:14,escrita:'quatorze'};
extenso[14]= {numero:15,escrita:'quinze'};
extenso[15]= {numero:16,escrita:'dezeseis'};
extenso[16]= {numero:17,escrita:'dezesete'};
extenso[17]= {numero:18,escrita:'dezoito'};
extenso[18]= {numero:19,escrita:'dezenove'};
extenso[19]= {numero:20,escrita:'vinte'};
extenso[20]= {numero:30,escrita:'trinta'};
extenso[21]= {numero:40,escrita:'quarenta'};
extenso[22]= {numero:50,escrita:'cinquenta'};
extenso[23]= {numero:60,escrita:'secenta'};
extenso[24]= {numero:70,escrita:'setenta'};
extenso[25]= {numero:80,escrita:'oitenta'};
extenso[26]= {numero:90,escrita:'noventa'};
extenso[27]= {numero:100,escrita:'cem'};
extenso[28]= {numero:200,escrita:'duzentos'};
extenso[29]= {numero:300,escrita:'trezentos'};
extenso[30]= {numero:400,escrita:'quatrocentos'};
extenso[31]= {numero:500,escrita:'quinhentos'};
extenso[32]= {numero:600,escrita:'seiscentos'};
extenso[33]= {numero:700,escrita:'setecentos'};
extenso[34]= {numero:800,escrita:'oitocentos'};
extenso[35]= {numero:900,escrita:'novecentos'};


function conta(){// funcao que  trasforma conteudo numerico escrito por extenso
    var valores= new Array();
    var a;
    a=document.getElementById("camp").value;
    a=verifica(a);
    unid=a.length - 1;
    marc11=0;
    for(var expo=0,unid;unid>=0;unid--,expo++){
         if(a[a.length-2]==1 && marc11==0){
             if(a[a.length-1]==1)
                 valores[unid-1]=extenso[10].escrita;
            else valores[unid-1]=extenso[a[unid-1]+a[unid]-1].escrita;
            valores[unid]="";
            marc11=1;
            unid=unid-1;
            expo=expo+1;
        }
        else{    
            for(l=0;l<=35;l++){
                if(extenso[l].numero ==a[unid]*expoent(expo))
                    valores[unid]=extenso[l].escrita;
            }
        }
    }
    alert(valores);
    b=document.getElementsByTagName("table");
    b[0].rows[0].cells[1].innerHtml=formata(valores);    
}
function expoent(v){
    var mult=1;
    if(v==3)
        return mult;
    for(v;v>0;v--)
        mult=mult*10;
    return mult;
}
function formata(v){
    var porExtenso;
    var e=" e ";
    switch(v.length){
        case 1:porExtenso=v[0];
        break;
        case 2:porExtenso=v[0]+e+v[1];
        break;
        case 3:porExtenso=v[0]+e+v[1]+e+v[2];
        break;
        case 4:porExtenso=v[0]+" mil "+v[1]+e+v[2]+e+v[3];
        break;
        default:porExtenso="Erro";
        break;        
    }
    if(porExtenso[porExtenso.length-1]==" ")
        porExtenso=porExtenso.substr(0,porExtenso.length -2);
    return porExtenso;
}
function verifica(valor){
    var vrf = 0;
    for(i=0;i<valor.length;i++){
        if(valor.charAt(i)==",")
            vrf=1;
        }
    if(vrf==1){
        valor=valor.split(",");
        return valor[0];
    }    
    else return valor;
}
</script>
<body>
<input type="text" size="10" id="camp" /><input type="button" onclick="conta()" />
<table>
    <tr>
        <td>por extenso:</td><td>aaaaaaaaaaaaa</td>
    </tr>
</table>
</body>
</html>

esse codigo se limita 1 a 9999 , caso alguém queira um range maior , se quiser uma maozinha pra mudar podeme adiciona no MSN! falow! :lol:

Link to comment
Share on other sites

  • 0

kara você pode fazer o seguinte vou dá exemplo function transformar ParaExteso(value{

let unidades = [zero , um , dois ,treze, quatro ,sinco .seis , sete ,oito ,nove ,dez , onze , doze , treze , quatorze ,quinze , dezesseis , dezessete , dezoito, dezenove]

agora vou criar as dezenas

let dezenas=[vinte , trinta , quarenta ,sinquenta , sessenta , setenta , oitenta , noventa]

let valorExtenso

If(value <=19){

valorExtenso = unidades [value]

returno valorExtenso

}

else If(value >19 & value <21){

valorExtenso= dezenas [0]

returno valorExtenso

}

else If(value >=21 & value <= 29){

valorExtenso = dezenas [0] + '' e" + unidades [value -20]

return valorExtenso

}

 

}

teste e tente intender essa lógica

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...