PDA

Ver la versión completa : Digito verificador de la CI



Thalios
19-08-2014, 03:28 PM
Buenas gente, por un error que tuvo un compañero aca en la oficina haciendo un tramite de DGI con una cedula se nos dio por buscar como se calculan o verifican los codigos verificadores de las Cedulas.

Para eso se toman los primeros siete numeros y se multiplican cada uno (respetando el lugar, es decir: primero x primero, segundo por segundo) por 2987634.

Ejemplo:
Si la cedula es 1234567 la cuenta quedaría así:

1x2+2x9+3x8+4x7+5x6+6x3+7x4= 148.

Luego se toma el resultado y se le busca el numero mayor que termina en 0

y se le resta el resultado. Ej: 150-148= 2.

El número 2 es el dígito verificador para la cedula

1234567


una curiosidad nomas...


para poner algo mas... Cuando era chico gane un sorteo en el Deboto y no me lo querian dar porque el numero de cedula estaba mal, la cosa es que fuimos al local con la cedula y estaba mal, tuvimos que ir a DNIC para que calcularan de nuevo y me dieran el carton con el numero correcto

(los de deboto se hicieron los boludos y nunca me dieron el premio)

DT-Agus
19-08-2014, 03:31 PM
La verdad no sabria decirte como se calcula correctamente, pero me intriga saber que era el premio?

Imagino que no un auto o algo similar porque si no hubieras hecho un piquete afuera hasta que te lo dieran.

TomcatMVD
19-08-2014, 03:46 PM
Ja ja... como buen idiota que soy, me lo pregunté alguna vez.
Linda data!

Rhapsody
19-08-2014, 03:47 PM
Lo vi en prog hace un tiempo, pero me suena que lo hacíamos de otra manera :P

BTW, es deVoto*

bicho
19-08-2014, 03:51 PM
Lo vi en prog hace un tiempo, pero me suena que lo hacíamos de otra manera :P

BTW, es deVoto*

si,pero deboton no le dieron el premio

Legolas
19-08-2014, 04:03 PM
Todos los días se aprende algo nuevo. Ésto es para comentar en una reunión, cuándo recién se arranca con las copas.

Sos el namber guan!

Enviado desde mi telégrafo usando código morse

Thalios
19-08-2014, 04:18 PM
jajaja era una "tarjeta de debito" valor 1000 pesos para gastar en juguetes, fue por el dia del niño


1000$ en aquel tiempo era mucha plata, seria por el 96 o 97

BloodElf
19-08-2014, 05:15 PM
Paaa, algo que siempre quise saber jaja

Me intriga por que ese numero y no otro...

UnKiloDeYerba
19-08-2014, 05:23 PM
Buenas gente, por un error que tuvo un compañero aca en la oficina haciendo un tramite de DGI con una cedula se nos dio por buscar como se calculan o verifican los codigos verificadores de las Cedulas.

Para eso se toman los primeros siete numeros y se multiplican cada uno (respetando el lugar, es decir: primero x primero, segundo por segundo) por 2987634.

Ejemplo:
Si la cedula es 1234567 la cuenta quedaría así:

1x2+2x9+3x8+4x7+5x6+6x3+7x4= 148.

Luego se toma el resultado y se le busca el numero mayor que termina en 0

y se le resta el resultado. Ej: 150-148= 2.

El número 2 es el dígito verificador para la cedula

1234567


una curiosidad nomas...


para poner algo mas... Cuando era chico gane un sorteo en el Deboto y no me lo querian dar porque el numero de cedula estaba mal, la cosa es que fuimos al local con la cedula y estaba mal, tuvimos que ir a DNIC para que calcularan de nuevo y me dieran el carton con el numero correcto

(los de deboto se hicieron los boludos y nunca me dieron el premio)

Gracias por la información, ¿para qué nos podría servir?, lo pregunto en serio.

Legolas
19-08-2014, 05:31 PM
Gracias por la información, ¿para qué nos podría servir?, lo pregunto en serio.
Para quedar cómo la enciclopedia de los datos bobos pero interesantes en alguna reunión.

OT: esa entrevista?


Enviado desde mi telégrafo usando código morse

efex
19-08-2014, 05:47 PM
Gracias por la información, ¿para qué nos podría servir?, lo pregunto en serio.

si programas algo que requiera ingresar cedulas como dato podes meter el calculo para verificar que el operador no haya metido mal un dedazo. Que el software haga la cuenta y si no cierran los numeros es porque no metio bien los idem

Thalios
19-08-2014, 06:01 PM
si programas algo que requiera ingresar cedulas como dato podes meter el calculo para verificar que el operador no haya metido mal un dedazo. Que el software haga la cuenta y si no cierran los numeros es porque no metio bien los idem

This...


En los projectos de la ort muchas veces piden poner cedulas, meter esta verificacion suma puntos (cuando no es obligatorio) por ejemplo :P

Rodribera32
19-08-2014, 06:32 PM
Interesting...

Y cuando no llega al millon, como es? 2x0?...(Me embola probarlo :p)

BloodElf
19-08-2014, 06:39 PM
Esto le serviria a WooW cuando vas a buscar las cosas al local... Apesta el sistema que tienen

seba_uy
19-08-2014, 07:58 PM
Las financieras, esas que te dan guita "solo con la cédula", lo usan seguro.

UnKiloDeYerba
19-08-2014, 08:34 PM
Ahh ta!, yo pensé que unicamente eran fórmulas para complicarse la vida jaja.



OT: esa entrevista?
Enviado desde mi telégrafo usando código morse
"En la semana te llamamos cualquier cosa". Gracias por preguntar!!

maturrus
19-08-2014, 10:55 PM
Buen dato!

Devian
07-09-2020, 08:40 AM
Perdonen que retome éste tema antiguo, pero eso de la fórmula sigue actual.

Estuve buscando por las internetes esa misma fórmula pero hecha en excel, y no encontré nada, es raro, así que tuve que poner manos a la obra.

Me quedó un poco larga pero es así porque quería hacerla sin ninguna referencia absoluta a ninguna celda en especial.

Ésta formula agarra la celda de la izquierda y calcula el dígito verificador.
De esa forma pueden "copiar y pegar" la misma fórmula en cualquier celda de la tabla de excel, la fórmula no cambia independientemente del lugar donde esté.

Si usan el Excel en ESPAÑOL la fórmula es ésta:

=RESIDUO(ABS(RESIDUO(RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^6);10)*2;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^5);10)*9;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^4);10)*8;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^3);10)*7;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^2);10)*6;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^1);10)*3;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^0);10)*4;10);10)-10);10)

Por ejemplo: pongo el Nº de cédula en la celda "F5", y la Fórmula la pongo en la celda de la derecha, "G5".
Seguro que hay mil maneras de hacer la misma fórmula un poco más corta.

Si Tienen el excel en Inglés la fórmula es ésta otra:

=MOD(ABS(MOD(MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^6);10)*2;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^5);10)*9;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^4);10)*8;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^3);10)*7;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^2);10)*6;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^1);10)*3;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^0);10)*4;10);10)-10);10)

Devian

Thalios
08-09-2020, 01:45 PM
Perdonen que retome éste tema antiguo, pero eso de la fórmula sigue actual.

Estuve buscando por las internetes esa misma fórmula pero hecha en excel, y no encontré nada, es raro, así que tuve que poner manos a la obra.

Me quedó un poco larga pero es así porque quería hacerla sin ninguna referencia absoluta a ninguna celda en especial.

Ésta formula agarra la celda de la izquierda y calcula el dígito verificador.
De esa forma pueden "copiar y pegar" la misma fórmula en cualquier celda de la tabla de excel, la fórmula no cambia independientemente del lugar donde esté.

Si usan el Excel en ESPAÑOL la fórmula es ésta:

=RESIDUO(ABS(RESIDUO(RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^6);10)*2;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^5);10)*9;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^4);10)*8;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^3);10)*7;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^2);10)*6;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^1);10)*3;10)+RESIDUO(RESIDUO(ENTERO(INDIRECTO("F"&FILA()&"C"&COLUMNA()-1;0)/10^0);10)*4;10);10)-10);10)

Por ejemplo: pongo el Nº de cédula en la celda "F5", y la Fórmula la pongo en la celda de la derecha, "G5".
Seguro que hay mil maneras de hacer la misma fórmula un poco más corta.

Si Tienen el excel en Inglés la fórmula es ésta otra:

=MOD(ABS(MOD(MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^6);10)*2;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^5);10)*9;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^4);10)*8;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^3);10)*7;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^2);10)*6;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^1);10)*3;10)+MOD(MOD(INT(INDIRECT("R"&ROW()&"C"&COLUMN()-1;0)/10^0);10)*4;10);10)-10);10)

Devian

se los paso en java ya que estamos jaja


package estructuraDatos;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Iterator;
import java.util.List;


public class PrincipalRegex {


public static void main(String[] args) {
List<Integer> listaDigitos = new ArrayList<Integer>();
List<Integer> listaConstante = new ArrayList<Integer>();
;
listaConstante.add(8);
listaConstante.add(1);
listaConstante.add(2);
listaConstante.add(3);
listaConstante.add(4);
listaConstante.add(7);
listaConstante.add(6);




String ci = " ";
System.out.println("Ingrese su CI sin puntos y con guion por favor");


ci = ci.toString();
System.out.println(ci);


Scanner teclado = new Scanner(System.in);
ci = teclado.nextLine();
teclado.close();




int digitoVerif;


try {
if (ci.matches("([0-9]){7}[-.]{1}[0-9]{1}")) {


for (int i = 0; i < 7; i++) {
String dato = ci.substring(i, i + 1);
listaDigitos.add(Integer.parseInt(dato));
}


int resultado = ValidarDocumento(listaConstante, listaDigitos);
digitoVerif = Integer.parseInt(ci.substring(8));


System.out.println(ci.substring(8));


if (resultado == digitoVerif) {
System.out.println("Digito verificador valido");
} else {
System.out.println("Digito verificador no valido");
}
} else {
System.out.println("formato invalido, por favor use 9999999-9 o 9999999.9");


}


} catch (Exception e) {
System.out.println("La cedula contiene caracteres invalidos");
}


}


public static int ValidarDocumento(List<Integer> listaConstante, List<Integer> lista) {
// X = [(1x8)+(2x1)+(3x2)+(4x3)+(5x4)+(6x7)+(7x6)] mod 10
int guion = 0;


Iterator<Integer> constIterator = listaConstante.iterator();
Iterator<Integer> cedulaIterator = lista.iterator();


while (constIterator.hasNext()) {


guion += constIterator.next() * cedulaIterator.next();
}
// Aplico el modulo de 10 al resultado
guion = guion % 10;
return guion;


}


}




Si todos sabemos que se puede hacer mejor...

Master of the Wind
08-09-2020, 02:32 PM
Yo tengo en algun lado un generador de cedulas, con digito verificador y todo en Python.

Lo hice alla por el 2011 porque en la UTU hice un formulario de inscripcion online, y en central me cagaron a pedo para que lo saque porque no lo permitia el reglamento. Lo saco y veo que a otra escuela no le dijeron nada, asi que le llenamos todos los cupos de bronca nomas con cedulas de Jose Perez.

Lo gracioso es que publicaron en sus redes sociales que estaban orgullosos de que solamente en 20 minutos la gente llene sus cupos, despues se dieron cuenta y se retractaron jaja

Thalios
08-09-2020, 04:45 PM
Yo tengo en algun lado un generador de cedulas, con digito verificador y todo en Python.

Lo hice alla por el 2011 porque en la UTU hice un formulario de inscripcion online, y en central me cagaron a pedo para que lo saque porque no lo permitia el reglamento. Lo saco y veo que a otra escuela no le dijeron nada, asi que le llenamos todos los cupos de bronca nomas con cedulas de Jose Perez.

Lo gracioso es que publicaron en sus redes sociales que estaban orgullosos de que solamente en 20 minutos la gente llene sus cupos, despues se dieron cuenta y se retractaron jaja


jajajaja lpm


btw los que están arrancando a programar tienen un lino ejercicio, sin mirar el codigo mio:



Verificar si una CI tiene el dígito verificador correcto
Verificar que la CI sea ingresada con un formato válido


Aca les dejo la constante de cómo se calcula:
// X = [(1x8)+(2x1)+(3x2)+(4x3)+(5x4)+(6x7)+(7x6)] mod 10

uru2404
08-09-2020, 09:17 PM
Otra manera en excel.

CC = celda cedula

Celda resultado parcial
=EXTRAE(CC;1;1)*2+EXTRAE(CC;2;1)*9+EXTRAE(CC;3;1)*8+EXTRAE(CC;4;1)*7+EXTRAE(CC;5;1)*6+EXTRAE(CC;6;1) *3+EXTRAE(CC;7;1)*4

Luego en otra celda
=10-EXTRAE(celda resultado parcial;3;1)