-- AUTORA: Elvira Mayordomo Cámara -- PROYECTO: procedimiento de cálculo de la letra del NIF -- FICHERO: EDA/nif.adb with Ada.text_io, Ada.Strings.Unbounded, Ustrings; use Ada.text_io, Ada.Strings.Unbounded, Ustrings; procedure nif is resto:integer; DNI:ustring; begin get_line(DNI); resto:=0; -- primero se calcula el resto del DNI módulo 23 for i in 1..length(DNI) loop resto := (resto*10+character'pos(element(DNI,i))-character'pos('0')) mod 23; end loop; case resto is when 0 => put("T"); when 1 => put("R"); when 2 => put("W"); when 3 => put("A"); when 4 => put("G"); when 5 => put("M"); when 6 => put("Y"); when 7 => put("F"); when 8 => put("P"); when 9 => put("D"); when 10 => put("X"); when 11 => put("B"); when 12 => put("N"); when 13 => put("J"); when 14 => put("Z"); when 15 => put("S"); when 16 => put("Q"); when 17 => put("V"); when 18 => put("H"); when 19 => put("L"); when 20 => put("C"); when 21 => put("K"); when 22 => put("E"); when others => put(" "); end case; end nif;