verificar orden de numeros en secuencia (ayuda)
Publicado por zeretexe (2 intervenciones) el 14/07/2020 01:55:42
Estoy practicando para un parcial y tengo un problema en un punto.
Me pide que verifique si los digitos de cada uno de los numeros estan ordenados de manera creciente o decreciente.
Mi codigo tiene otro problema mas pequeño; que tambien me verifica el 0, pero no es urguente.
(a) tienen todos sus dígitos en algún orden estrictamente creciente o decreciente
Las variables y funciones que puedo utilizar son las que puse en mi codigo, hay cosas como array, etc. que no las podemos utilizar.
Ej:
Ingresá una secuencia de números terminada en 0:
13 213 123 22 83 0
13 cumple las dos propiedades
213 no cumple ninguna
123 cumple que están en orden
22 cumple que la suma de los dígitos no es múltiplo de 3
83 cumple las dos propiedades
El problema pide mas cosas pero la parte que no puedo descifrar es esa.
Me pide que verifique si los digitos de cada uno de los numeros estan ordenados de manera creciente o decreciente.
Mi codigo tiene otro problema mas pequeño; que tambien me verifica el 0, pero no es urguente.
(a) tienen todos sus dígitos en algún orden estrictamente creciente o decreciente
Las variables y funciones que puedo utilizar son las que puse en mi codigo, hay cosas como array, etc. que no las podemos utilizar.
Ej:
Ingresá una secuencia de números terminada en 0:
13 213 123 22 83 0
13 cumple las dos propiedades
213 no cumple ninguna
123 cumple que están en orden
22 cumple que la suma de los dígitos no es múltiplo de 3
83 cumple las dos propiedades
El problema pide mas cosas pero la parte que no puedo descifrar es esa.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
program programa2;
var
aux, num:integer;
condicionVB: boolean;
condicionVA: boolean;
procedure inivar;
begin
num:=0;
aux:=0;
end;
{-----------------------------------------}
procedure pausa; //enter para continuar
begin
repeat
writeln();
writeln('>> Presione ENTER para continuar <<');
readln();
until eoln;
end;
{-----------------------------------------}
function multiplos(num2:integer):boolean; //verifica mult3
var
ultimo_digito, suma:integer;
begin
ultimo_digito:=0;
suma:=0;
repeat
begin
ultimo_digito := num2 mod 10;
num2 := num2 div 10;
suma := suma + ultimo_digito;
if suma mod 3 = 0 then
multiplos := false
else
multiplos := true;
end;
until num2=0;
end;
{-----------------------------------------}
function ordenes(num3:integer):boolean; //verifica orden de los digitos
var
ultimo_digito2:integer;
{
Esta parte seria la que no puedo hacer.
}
begin
repeat
begin
ultimo_digito2 := num3 mod 10;
num3 := num3 div 10;
if (ultimo_digito2 = num3+1) then
ordenes := true
else
ordenes := true;
end;
until num3=0;
end;
{=========================================}
begin
writeln('Escribe una secuencia de numeros que acabe 0');
inivar;
repeat
read(num); aux:=num;
condicionVA:=ordenes(aux);
condicionVB:=multiplos(aux);
if (condicionVA) and (condicionVB) then
writeln(num, ' Cumple condicion A y B')
else if not (condicionVA) and (condicionVB) then
writeln(num, ' No cumple ninguna condicion')
else if (condicionVB) and not (condicionVA) then
writeln(num, ' Cumple solo la condicion B')
else if (condicionVA) and not (condicionVB) then
writeln(num, ' Cumple solo la condicion A')
until (num=0);
pausa;
end.
Valora esta pregunta


0