Pregunta: | 1263 - COMO VALIDAR EL RUT |
Autor: | Jonny BS |
Alguien me podria decir como se valida el rut. Me refiero que cuando ingreso 154456355 me aparesca automaticamente el digito 5 |
Respuesta: | rodrigo plaza |
import java.io.*;
class a{ public static void main(String[]args)throws IOException{ int dv,sum, mult,pot,rest; double num,suma,resto,digito; suma=0; mult=3; BufferedReader leer=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Ingrese Rut:"); num=Double.parseDouble(leer.readLine()); for ( pot =7 ; pot >=0 ; pot-- ){ digito=(num/(Math.pow(10,pot))); num=(num%(Math.pow(10,pot))); digito=(int)digito; suma=suma+(digito*mult); mult--; if (mult==1) mult=7; } sum=(int)suma; resto=sum%11; rest=(int)resto; dv=11-rest; if((dv>=1)&&(dv<=9)){ System.out.println("El digito es:"+dv); }else{ if(dv==10){ System.out.println("El digito es:K"); }else if (dv==11){ System.out.println("El digito es:0"); } } } } |
Respuesta: | kurohito s |
aca lo tengo en java pero lo puedes mejorar si quieres
(lo tengo activado con el IOConsole que es para facilitar el uso de java si quieres mandame un mail si quieres que te lo mande) public class digito{ public static void main(String[]args){ /*declaraciones*/ int rut, mult1, mult2, mult3, mult4, mult5, mult6, mult7, mult8; int a, b, c, d, e, f, g, h, suma, resta, division; IOConsole.println("ingrese su rut omitiendo el codigo verifecador"); rut=IOConsole.readInt(); /*divido el rut digito pòr digito*/ a=(rut%100000000)/10000000; b=(rut%10000000)/1000000; c=(rut%1000000)/100000; d=(rut%100000)/10000; e=(rut%10000)/1000; f=(rut%1000)/100; g=(rut%100)/10; h=(rut%10); /*cada resultado lo multiplico para poder luego sumarlo*/ mult1=a*3; mult2=b*2; mult3=c*7; mult4=d*6; mult5=e*5; mult6=f*4; mult7=g*3; mult8=h*2; /* los resultados los sumo*/ suma=(mult1+mult2)+(mult3+mult4)+(mult5+mult6)+(mult7+mult8); division=suma%11; resta=11-division; if(resta>=10){ IOConsole.println("su digito verificador es:"); IOConsole.println("k"); }else{IOConsole.println("sucodigo verificador es"); IOConsole.println(""+resta); } } } |
Respuesta: | Lucía Gutiérrez |
Tomas el Rut y separas sus dígitos. Partiendo desde el menos significativo(derecha), se comienza a multiplicar por 2, luego 3, 4,5,6 y 7, después se vuelve a 2 y a 3 y así sucesivamente. Los resultados de esas multiplicaciones se suman. Por ejemplo : rut : 12.345.678 quedaría => = 8*2 +7*3 +6*4 +4*5 +4*6 +3*7 +2*2 +1*3 = 16 + 21 + 24 + 20 + 24 + 21 + 4 + 3 = 133 Este resultado se divide en forma entera por 11, y el "resto", lo que le sobra a la parte entera de la división es restado a 11. 133 : 11 = 12 1 En este caso el 1 es el resto, por lo tanto se hace la resta : 11 - 1 = 10 Si hubiera dado un dígito simple se deja ese número como dígito verificador, pero como es 10, se reemplaza por K. El resultado sería : 12.345.678-K Esa es la metodología, tú lo programas como quieras. |
Respuesta: | Alex Formas Diaz |
Hola : Aqui te envio una rutina del diguito verificador, la cual tienes que mejorar, esta Hecha en FoxPro. rut=m.rut seek rut if .not.found() if m.dig=´ ´ _curobj=1 else rut_c=str(m.rut,8,0) ax1=val(substr(rut_c,1,1))*3 ax2=val(substr(rut_c,2,1))*2 ax3=val(substr(rut_c,3,1))*7 ax4=val(substr(rut_c,4,1))*6 ax5=val(substr(rut_c,5,1))*5 ax6=val(substr(rut_c,6,1))*4 ax7=val(substr(rut_c,7,1))*3 ax8=val(substr(rut_c,8,1))*2 ax9=ax1+ax2+ax3+ax4+ax5+ax6+ax7+ax8 ax10=11-(ax9-(int(ax9/11)*11)) ax11=ltrim(str(ax10,2)) do case case ax11=´11´ ax11=´0´ case ax11=´10´ ax11=´K´ endcase IF ax11<>m.dig _curobj=1 ELSE do pdialog rut = val(substr(rut_prv,1,8)) dig = right(rut_prv,1) n_prv = nom_prv select 1 m.rut_p = pag_prv.rut_prv _curobj=1 ENDIF endif else rut = val(substr(rut_prv,1,8)) dig = right(rut_prv,1) n_prv = nom_prv select 1 m.rut_p = pag_prv.rut_prv endif show gets set near off PROCEDURE RUT_PRG rut_c=str(m.rut,8,0) ax1=val(substr(rut_c,1,1))*3 ax2=val(substr(rut_c,2,1))*2 ax3=val(substr(rut_c,3,1))*7 ax4=val(substr(rut_c,4,1))*6 ax5=val(substr(rut_c,5,1))*5 ax6=val(substr(rut_c,6,1ð/LM/W3SVC/116/Root |