Diferencia entre revisiones de «Algoritmia/Algoritmo para obtener la letra del NIF»

Contenido eliminado Contenido añadido
→‎Enlaces externos: Eliminación de enlaces antiguos que ya no son validos e inclusión de un nuevo enlace que tiene la funcionalidad de obtener la letra del NIF.
Cambio de tag
Línea 29:
Éste es el código fuente en [[Programación en Ada|Ada]] para calcular la letra del NIF.
 
<sourcesyntaxhighlight lang=ada>
function Letra_Nif (Dni : Positive) return Character is
Letras : constant String := "TRWAGMYFPDXBNJZSQVHLCKE";
Línea 35:
return Letras ((Dni mod Letras'Length) + 1);
end Letra_Nif;
</syntaxhighlight>
</source>
 
=== [[Programación en Matlab|Matlab]] ===
Línea 41:
Éste es el código fuente en [[Programación en Matlab|Matlab]] para calcular la letra del NIF.
 
<sourcesyntaxhighlight lang=matlab>
dni=12345678
res=dni-floor(dni/23)*23;
A=['T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'];
letra=A(res+1)
</syntaxhighlight>
</source>
 
 
=== [[AppleScript]] ===
Código fuente del cálculo de la Letra del NIF en [[AppleScript]]
<sourcesyntaxhighlight lang=applescript>
on LetraDNI(dni)
return character (1 + (dni as integer) mod 23) of "TRWAGMYFPDXBNJZSQVHLCKE"
end LetraDNI
</syntaxhighlight>
</source>
 
=== [[Manual de ASP/ASP & VBScript|ASP 3.0 VBScript]] ===
<sourcesyntaxhighlight lang=asp>
Function sacaLetra(ByVal dni)
Dim tabla,pos
Línea 65:
sacaLetra = tabla(pos)
End Function
</syntaxhighlight>
</source>
Y para Validar el NIF:
<sourcesyntaxhighlight lang=asp>
Function validaNIF(ByVal nif)
Dim dni
Línea 77:
End If
End Function
</syntaxhighlight>
</source>
 
=== [[Bash|Bourne shell script]] ===
<sourcesyntaxhighlight lang=bash>
echo TRWAGMYFPDXBNJZSQVHLCKE | cut -c $(( $(( $1 % 23 )) + 1 ))
</syntaxhighlight>
</source>
otra forma sin utilizar las órdenes externas (echo y cut)
<sourcesyntaxhighlight lang=bash>
LETRANIF="TRWAGMYFPDXBNJZSQVHLCKE"
DNI=12345678
echo ${LETRANIF:$DNI % 23:1}
</syntaxhighlight>
</source>
 
=== [[Programación en C|C]] ===
<sourcesyntaxhighlight lang="c">
#include <stdlib.h>
#include <string.h>
Línea 118:
return 0;
}
</syntaxhighlight>
</source>
 
=== [[Programación en C++|C++]] ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
using namespace std;
Línea 141:
}
 
</syntaxhighlight>
</source>
 
=== [[Programación en C++ Builder|C++ Builder]] ===
<sourcesyntaxhighlight lang="cpp">
AnsiString Letra(AnsiString Nif)
{
Línea 187:
}
}
</syntaxhighlight>
</source>
 
=== [[Visual C++|VC++ 2008]] ===
<sourcesyntaxhighlight lang="c">
/// <summary> Genera la letra correspondiente a un DNI. </summary>
public: System::String^ LetraNIF(System::String^ dni)
Línea 197:
return Correspondencia[ Convert::ToInt32(dni) % 23 ].ToString() ;
}
</syntaxhighlight>
</source>
 
=== [[C sharp NET|C#]] ===
Línea 204:
* El NIE esta compuesto de 9 caracteres Letra+7digitos+Letra, debe tenerse esto encuenta al realizar las validaciones de tamaño.
En las comparaciones longitud y conversión a entero, debe poner (nie.Length != 9) y (!int.TryParse(nie.Substring(1,7), out n) o jamas aceptara un NIE real como valido.
<sourcesyntaxhighlight lang="csharp">
/// <summary> Tabla de asignación. </summary>
public const string CORRESPONDENCIA = "TRWAGMYFPDXBNJZSQVHLCKE";
Línea 249:
}
}
</syntaxhighlight>
</source>
 
=== [[C sharp NET|C#]] (versión mejorada con expresiones regulares) ===
Versión mejorada que usa [https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular expresiones regulares] para comprobar que el DNI está compuesto por 8 dígitos y que el nie está compuesto por el caracter 'X', 'Y' o 'Z' (independientemente de que sea en mayúsculas o minúsculas) seguido de 7 dígitos.
 
<sourcesyntaxhighlight lang="csharp">
/// <summary> Tabla de asignación. </summary>
public const string CORRESPONDENCIA = "TRWAGMYFPDXBNJZSQVHLCKE";
Línea 297:
throw new ArgumentException("El NIE debe comenzar con la letra X, Y o Z seguida de 7 dígitos.");
}
</syntaxhighlight>
</source>
 
=== [[Fortran]] ===
<sourcesyntaxhighlight lang="fortran">
program TREVISONE
implicit none
Línea 316:
end program TREVISONE
</syntaxhighlight>
</source>
 
=== [[Java (Sun)|Java]] ===
 
<sourcesyntaxhighlight lang="java">
 
public static final String NIF_STRING_ASOCIATION = "TRWAGMYFPDXBNJZSQVHLCKE";
Línea 333:
}
 
</syntaxhighlight>
</source>
 
=== [[Programación en JavaScript|JavaScript]] ===
 
<sourcesyntaxhighlight lang=javascript>
// devuelve la letra correspondiente a un número DNI
function letraDni(dni) {
return "TRWAGMYFPDXBNJZSQVHLCKE".charAt(dni % 23);
}
</syntaxhighlight>
</source>
 
Ejecutable en navegador:
 
<sourcesyntaxhighlight lang=javascript>
Javascript:letraDni(numeroDni);
</syntaxhighlight>
</source>
 
=== [[lenguaje de programación Pascal|Pascal]]/[[Programación en Delphi|Delphi]] ===
 
<sourcesyntaxhighlight lang="Delphi">
Function IsValidNIF(ANIF: String): Boolean;
Var
Línea 372:
End;
end;
</syntaxhighlight>
</source>
 
=== [[Programación en Perl|Perl]] ===
 
<sourcesyntaxhighlight lang="perl">
sub LetraDNI {
my $dni = shift;
return substr( 'TRWAGMYFPDXBNJZSQVHLCKE', $dni % 23, 1);
}
</syntaxhighlight>
</source>
 
=== [[Programación en PHP|PHP]] ===
 
<sourcesyntaxhighlight lang="php">
function letra_nif($dni) {
Línea 393:
$numero = "12345678";
echo 'El NIF del DNI "'.$numero.'" es "'.$numero.letra_nif($numero).'"';
</syntaxhighlight>
</source>
 
=== [[Usuario:Pilonieta/Python|Python]] ===
 
<sourcesyntaxhighlight lang="python">
def letra_nif(numeros):
return "TRWAGMYFPDXBNJZSQVHLCKE"[numeros%23]
</syntaxhighlight>
</source>
 
=== [[Programación en Ruby|Ruby]] ===
 
<sourcesyntaxhighlight lang=ruby>
puts "TRWAGMYFPDXBNJZSQVHLCKE"[gets.to_i % 23].chr
</syntaxhighlight>
</source>
 
=== [[Visual Basic]] ===
 
<sourcesyntaxhighlight lang=vb>
Private Function NIF(DNI As Long)
NIF = DNI & "-" & Mid$("TRWAGMYFPDXBNJZSQVHLCKE", (DNI Mod 23) + 1, 1)
End Function
</syntaxhighlight>
</source>
 
=== [[Excel]] ===
<sourcesyntaxhighlight lang=vb>
=CONCATENAR(A1;MED("TRWAGMYFPDXBNJZSQVHLCKE";RESTO(A1;23)+1;1))
=CONCATENAR(A1;EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(A1;23)+1;1))
Línea 423:
En calc (OpenOffice)
=CONCATENAR(A1,MID("TRWAGMYFPDXBNJZSQVHLCKE",RESIDUO(A1,23)+1,1))
</syntaxhighlight>
</source>
 
Siendo A1 la celda de origen del DNI sin letra.
Línea 429:
=== [[PL-SQL]] ===
 
<sourcesyntaxhighlight lang=plsql>
 
declare @nif varchar(9)
Línea 439:
 
print @nif
</syntaxhighlight>
</source>
 
en sentencias SELECT:
 
<sourcesyntaxhighlight lang=plsql>
SELECT CONVERT(varchar(8),tablaPersonas.dni) + SUBSTRING('TRWAGMYFPDXBNJZSQVHLCKE', tablaPersonas.dni % 23 + 1, 1)
FROM tablaPersonas
</syntaxhighlight>
</source>
 
o más simple para ORACLE:
 
<sourcesyntaxhighlight lang=plsql>
SELECT dni||SUBSTR('TRWAGMYFPDXBNJZSQVHLCKET',MOD(dni,23)+1,1)
FROM tablaPersonas
</syntaxhighlight>
</source>
 
siendo tablaPersonas la tabla con el dato de usuario y el campo dni el origen del DNI y en formato entero (int).
 
=== [[SAP]] ===
<sourcesyntaxhighlight lang=abap>
FORM resultado USING VALUE(GV_NUMBER)
DATA GV_result(9) TYPE c.
Línea 469:
CONCATENATE lv_number gv_character INTO gv_result.
ENDFORM. " resultado
</syntaxhighlight>
</source>
 
Siendo gv_result el nº de nif con la letra.
 
=== [[PL/1]] ===
<sourcesyntaxhighlight lang=text>
CALCULAR_LETRA: PROC(DNI) RETURNS(CHAR);
DCL DNI PIC '99999999';
Línea 485:
RETURN(LETRA);
END CALCULAR_LETRA;
</syntaxhighlight>
</source>
 
Previamente hay que declarar en el programa que se importa la función del sistema para hallar restos:
<sourcesyntaxhighlight lang=text>
DCL (MOD) BUILTIN;
</syntaxhighlight>
</source>
 
== Enlaces externos ==