Pascal/Turbo Pascal - Averiguar dígitos.

   
Vista:

Averiguar dígitos.

Publicado por Szpilman (12 intervenciones) el 31/10/2014 00:33:45
Hola, en primer lugar agradecer por la ayuda prestada en esta página, es de gran ayuda para el estudiante de programación. Me han salvado la vida en contadas ocasiones.

Mi duda es la siguiente, deseo hacer un subprograma que reciba un número entero y devuelva TRUE si todas las cifras de este números son pares y devuelva FALSE en el caso contrario (todas las cifras sean impares, o impares y pares alternativamente). Os dejo una definición al respecto:“totalpar” todo número natural N tal que N=dm dm-1...d1 d0 y tal que todos sus dígitos son pares.

De momento este código es lo que llevo hecho, y me logra averiguar con ciertos números, pero no todas. Agradecería nuevamente un posible arreglo al respecto.

FUNCTION totalPar(num:INTEGER):BOOLEAN;
VAR
resTotalpar : INTEGER;
BEGIN
REPEAT
num := num DIV 10;
resTotalpar := num MOD 10;
resTotalpar := resTotalpar MOD 2;
IF resTotalpar = 0 THEN
totalPar := TRUE
ELSE
totalPar := FALSE;
UNTIL ( num = 0 ) OR ( totalPar = FALSE );
REPEAT
writeln();
END;


Muchas gracias antemano por la posible ayuda :)
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

Averiguar dígitos.

Publicado por ramon (2072 intervenciones) el 31/10/2014 19:22:24
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
{Mira estas correciones a ver si te sirve asi}
 
program digitos;
 uses
    crt;
 
 
   FUNCTION totalPar(num:INTEGER):boolean;
   VAR
     p, i, resTotalpar : INTEGER;
     par : boolean;
     BEGIN
          p := 0;
          i := 0;
      REPEAT
         resTotalpar := num MOD 10;
         num := num DIV 10;
         resTotalpar := resTotalpar MOD 2;
         if resTotalpar = 0 then
         p := p + 1
      else
         i := i + 1;
    UNTIL  num = 0;
    if (p > 0) and (i = 0) then
    begin
       totalpar := true;
    end;
    if (p = 0) and (i > 0) then
    begin
    totalPar := false;
    end;
    if (p > 0) and (i > 0) then
    totalPar := false;
   END;
 
  begin
     clrscr;
     writeln('   El Resultado Es = ',totalPar(2468));
     readkey;
  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