/* PERSONALIZACION DE LUIS

2/7/08

Imbatible xls

Cómo se calcula la letra del NIF:


Con EXCEL:

=CONCATENAR(A1;EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(A1;23)+1;1))

Siendo A1 la celda de origen del DNI sin letra.


Con SAP (ABAP):
FORM resultado USING VALUE(GV_NUMBER)
DATA GV_result(9) TYPE c.
DATA lt_letters(24) TYPE c VALUE 'TRWAGMYFPDXBNJZSQVHLCKE'.
DATA lv_num TYPE i.
DATA lv_number(8) type n.
lv_number = gv_number.
lv_num = gv_number MOD 23.
gv_character = lt_letters+lv_num(1).
CONCATENATE lv_number gv_character INTO gv_result.
ENDFORM. " resultado


Siendo gv_result el nº de nif con la letra.


Con Python:

DNI=12345678
NIF='TRWAGMYFPDXBNJZSQVHLCKE'
print "El NIF del DNI es", NIF[DNI%23]

Con Ruby:

DNI = 12345678
NIF = 'TRWAGMYFPDXBNJZSQVHLCKE'
puts "El NIF del DNI es #{NIF[DNI % 23].chr}"

Con C++:

  #include 
#include

const char letra[] = "TRWAGMYFPDXBNJZSQVHLCKE";
const int kTAM = 8; // numero de cifras para el DNI
using namespace std;
int main (int argc, char *argv[])
{
int dni;
if (argc != 2)
cout << "uso: " <<>\n\n";
else
{
if (strlen(argv[1]) != kTAM)
cout << "DNI no valido.\n\n"; else { dni = atoi (argv[1]); dni %= 23; cout <<>

No me extraña la proliferación de los Excel silvestres.


Chorrada encontrada en Wikilibros

2 comentarios:

Anónimo dijo...

Y para pruebas el 00000000T, el usuario fantasma.

Anónimo dijo...

mmmm....
la fórmula excel supone muchas cosas, como que la celda A1 está rellena y es un número...

en ese caso permitidme romper una lanza por C/C++, suponiendo que en la variable dni se tiene la cifra del DNI.... la letra se calcula así:

char letra=((const char *)"TRWAGMYFPDXBNJZSQVHLCKE")[dni%23];