Pascal/Turbo Pascal - desglose de digitos

 
Vista:

desglose de digitos

Publicado por less (1 intervención) el 16/10/2011 20:19:56
porfa ayudenme esto es desglose de digitos
para evitar errores de trancripcin, es decir que se escriba un numero por otro o invertir la colocacion de los numeros,se utiliza un numero de verificacion.el ejemplo mas utilizado es el de los numeros de las cuenas bancarias y un metodo de verificacion es el modulo 11 que consiste en:
dado el siguiente numero 254316 la unidad es el digito de verificacion que se calcula como se indica a continuacion:
numero:25431
dado el siguiente numero 254316 la unidad es el digito de verificacion que se calcula como se indica a continuacion:
numero:254316
c multi: xxxxx
pro art:654321
10+20+12+6+1=41suma de los resultados de la multiplicacion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

desglose de digitos

Publicado por Ramon (2158 intervenciones) el 16/10/2011 22:36:17
{Esto es lo que pides}

program desglose;
uses
crt;
var
datonum : string[12];
nume, m11 : longint;


procedure entradanumero;
var
tecla : char;
error, cont : integer;
begin
cont := 1;
gotoxy(10,4);write('Entre N§ : ');
gotoxy(21,4);
fillchar(datonum,13,' ');
datonum[0] := chr(12);
repeat
tecla := readkey;
if tecla in[#48..#57] then
begin
datonum[cont] := tecla;
datonum[0] := chr(cont);
gotoxy(20 + cont,4);write(datonum[cont]);
cont := cont + 1;
if cont > 12 then
cont := 12;
end;
if tecla = #8 then
begin
cont := cont - 1;
if cont < 1 then
cont := 1;
datonum[cont] := ' ';
datonum[0] := chr(cont);
gotoxy(20 + cont,4);write(datonum[cont]);
end;
until (tecla = #13) or (tecla = #27);
if tecla = #13 then
begin
val(datonum,nume,error);
end
else
begin
nume := 0;
end;
clrscr;
end;

function digitoverificacion(nume : longint) : integer;
const
mul : array[1..6] of integer = (
2,3,4,5,6,7);
var
sera : longint;
cn, fallo, dd, i, n : integer;
dig : string[12];
mult : array[1..12] of longint;
begin
digitoverificacion := 0;
sera := nume;
str(sera,dig);
n := length(dig);
i := 1;
cn := 1;
repeat
dd := 0;
val(dig[(n + 1) - i],dd,fallo);
mult[i] := dd * mul[cn];
i := i + 1;
cn := cn + 1;
if cn > 6 then
cn := 1;
until i > n;
fallo := 0;
for i := 1 to n do
begin
fallo := fallo + mult[i];
end;
i := fallo mod 11;
digitoverificacion := 11 - i;
end;



begin
clrscr;
entradanumero;
writeln;
writeln(' El digito de verificacion DE = ',
nume,'-',digitoverificacion(nume));
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar