
Número RUT
C/Visual C
Publicado el 24 de Abril del 2003 por Hermes Medina
7.002 visualizaciones desde el 24 de Abril del 2003
Código de verificación del número rut.
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <ctype.h>
main()
{
char rut[12], digv;
int d[9], sw=0, i, j=0, sum, ver, dig, dign;
clrscr();
gotoxy(30,13);
printf("Ingrese el rut");
gets(rut);
for (i=0; i<12; i++)
{
switch(rut[i])
{
case '1': d[j]=1;
j++;
break;
case '2': d[j]=2;
j++;
break;
case '3': d[j]=3;
j++;
break;
case '4': d[j]=4;
j++;
break;
case '5': d[j]=5;
j++;
break;
case '6': d[j]=6;
j++;
break;
case '7': d[j]=7;
j++;
break;
case '8': d[j]=8;
j++;
break;
case '9': d[j]=9;
j++;
break;
case '0': d[j]=0;
j++;
break;
}
}
sum=d[0]*3+d[1]*2+d[2]*7+d[3]*6+d[4]*5+d[5]*4+d[6]*3+d[7]*2;
dig=sum%11;
ver=11-dig;
switch(ver)
{
case 10: digv='K';
break;
case 11: digv='0';
break;
default: dign=ver;
sw=1;
}
gotoxy(40,15);
if(sw==1)
{
if(d[8]==ver)
printf("El rut %s es valido", rut);
else
printf("El rut %s es incorrecto", rut);
}
if(sw==0)
{
rut[11]=toupper(rut[11]);
if(digv==rut[11])
printf("El rut %s es valido", rut);
else
printf("El rut %s es incorrecto", rut);
}
sleep(1);
return 0;
}
Comentarios sobre la versión: Versión 1 (3)
Bueno el retoque de lo ansestral con nuevos dedos....
Sabes la validacion de los Numeros de una patente de vehiculos....
Saludos con olor a mar.....
No sirve. Multiplica cada número del rut? que feo, no es estándar. Ni siquiera valida los famosos rut de prueba 1-9, 2-7, 3-5, 6-k
Mejor prueben este:
main(){int T,M=0,S=1;scanf("%d",&T);for(;T;T/=10)S=(S+T%10*(9-M++%6))%11;
printf("%c\n",S?S+47:75);}
Este sí que sí.
Salu2.