Error al corregir numero
Publicado por Lauti (4 intervenciones) el 16/02/2021 20:30:26
buenas mi problema es el siguiente, cuando ingreso un numero fuera del rango me pide que reingrese un numero, pero esta vez que este dentro del rango, hasta ahi todo bien, pero cuando pasa a la siguiente funcion, esta se ejecuta con el primer numero ingresado, es decir el que está fuera del rango. Desde ya si me pueden aydar estaria genia,muchas gracias :).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var n,a,b:integer;
////////////////////////////////////////////////////////////////////////////
function CambiaImpar(n:integer):integer;
begin
if (n = 0) then
CambiaImpar := 0
else if (n < 10) and (n mod 2 <> 0) then
CambiaImpar := CambiaImpar(n div 10) + ((n mod 10) - 1)
else if (n mod 2 <> 0) then
CambiaImpar := CambiaImpar(n div 10) * 10 + ((n mod 10) - 1)
else CambiaImpar := CambiaImpar(n div 10)
end;
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
procedure rango(n:integer);
begin
while (n < 20) or (n > 10000) do
begin
writeln('¡El número ingresado esta fuera del rango!');
writeln ('Ingrese un numero entre 20 y 10.000: ');
read(n);
end;
if (n >= 20) and (n <= 10000)
then writeln (n,' es valido :)')
end;
////////////////////////////////////////////////////////////////////////////
begin
write('ingrese un numero: ');
repeat
read(n);
rango(n);
writeln(n,' CambiaImpar es : ',CambiaImpar(n));
until (eoln);
readln;
end.
Valora esta pregunta
0