Pascal/Turbo Pascal - Ayuda con dígito verificador en Pascal

 
Vista:

Ayuda con dígito verificador en Pascal

Publicado por Claudia (2 intervenciones) el 09/09/2008 17:33:11
Hola, estoy comenzando a conocer Pascal. He hecho un programa pero me arroja error en distintas partes y no puedo encontrarlo. Les agradezco su ayuda. Acá pego mi programa:

program digito_verificador_run;

var run, i, r, b, x, run2: integer;
suma: longint;

writeln ('ingrese run (sin puntos ni digito verificador)');
read ln (run)
run2:= run; i:=2; suma:=0;
while (run2<>0) do;
begin
b:= run2 mod 10;
suma:= (suma + b*1);
i:= i + 1;
If i > 7 then
i:= 2;
run2:= run2 div 10;
end;
r:= suma mod 11;
x:= 11 - r;
if x = 11 then
writeln ('el run completo es:', run, '-0')
else
if (x = 10) then;
writeln ('el run completo es:', run,'-k')
else
writeln ('el run completo es:', run, '-', x);
readln;

end.
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

RE:Ayuda con dígito verificador en Pascal

Publicado por Miguel (159 intervenciones) el 09/09/2008 19:28:49
Bueno Claudia, el código tenia muchos errores.
* Si utilizas el "ReadKey" debes declarar la unidad Crt. Toda unidad se declara despues del program, poniendo USES <unit>.
* Te falto el BEGIN del inicio, un error importante.
* No se si es un error de tipeo, pero pusiste read ln(xxx), va todo pegado readln.
* Te faltaron un par de ;. Recuerda que debes ponerlos siempre al final de cada linea. Salvo que esa linea sea el final de un BEGIN, ahí no hace falta.
* Se te complicaron los END de los IF. Un consejo, siempre que tengas que poner un BEGIN END, escribe en una linea BEGIN salta a la otra escribe END, y entre medio empiezas a escribir el codigo, asi nunca te faltaran.
* Dentro del THEN (yo bajo el then por que es la convencion que uso) si tienes mas de una accion debes poner BEGIN END. Es decir THEN BEGIN ..... END
* Al final de la linea del ciclo WHILE pusiste ; ahi no van tampoco, sino se "clava el programa".

Bueno esas son unas de las consideraciones que puedo darte.
Aca te dejo el codigo corregido.

program digito_verificador_run;

USES Crt;

var run, i, r, b, x, run2: integer;
suma: longint;

BEGIN
writeln ('ingrese run (sin puntos ni digito verificador)');
readln(run);
run2:=run;
i:=2;
suma:=0;
while (run2<>0) do
begin
b:=(run2 mod 10);
suma:=(suma + b*1);
i:=(i + 1);
If i > 7
then BEGIN
i:= 2;
run2:= run2 div 10
end;
r:= (suma mod 11);
x:=(11 - r);
if x = 11
then
writeln ('el run completo es:', run, '-0')
else
if (x = 10) then
writeln ('el run completo es:', run,'-k')
else
writeln ('el run completo es:', run, '-', x);
end;
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

RE:Ayuda con dígito verificador en Pascal

Publicado por Claudia (2 intervenciones) el 11/09/2008 07:30:34
Muchas gracias por tu tiempo, Miguel.

En realidad estoy comenzando y no entiendo mucho de programar, pero tus indicaciones me han sido de bastante ayuda, aunque todavía tengo que arreglar un poco, y entender bastante más.

Gracias
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