Pascal/Turbo Pascal - Ayuda con PROBLEMAS DE DÍGITOS

 
Vista:
Imágen de perfil de Arcángel

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por Arcángel (5 intervenciones) el 02/02/2015 01:51:47
Saludos a todos los colegas programadores espero que alguno me pueda ayudar con el código para los siguientes problemas:
1.- Dado un Numero X, hacer rotar hacia la derecha en K dígitos, desplegar el resultado.
2.-Dado un Numero X, desplazar los dígitos pares a la derecha y los impares a la izquierda, desplegar el numero obtenido.
3.- Encontrar Números de 3 dígitos, cuya suma del cubo de los dígitos sea el número de 3 dígitos, desplegar los dígitos.
4.-En el numero 754XY hallar los dígitos de X y Y para que sea múltiplo de 3 y 4, desplegar todos los dígitos posibles.
5.-Dado un numero X ordenar sus dígitos de mayor a menor en forma descendente hacia la derecha, desplegar el numero con los dígitos ordenados.
6.- Dado un numero X ordenar sus dígitos de mayor a menor en forma ascendente hacia la derecha, desplegar el numero con los dígitos ordenados.
7.- Dado un numero X, hallar la suma del factorial de sus dígitos, desplegar la suma.
8.- Dado dos números X y Y con igual número de dígitos, generar un número Z intercalando los dígitos de X y Y, siendo que el primero que va a Z es el menor y luego el mayor dígito de X y Y. Desplegar el número Z obtenido.

Sé que parece un abuso pedir la solución de tantos problemas, pero los que planteo aquí son los que más me cuestan trabajo. Gracias de antemano por su colaboración.
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

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por ramon (2158 intervenciones) el 02/02/2015 22:33:20
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
[Mira para seguir dime si esto es lo que quieres]
 
 program desplazamientos;
 uses
   crt;
  var
    td, ti, nu, desp : integer;
    ss : string[20];
 
    procedure despla_izq_der(nu, desp : integer);
    begin
      writeln('  El numero a desplazar ',desp,' posiciones = ',nu);
      ti := nu shr desp;
      td := nu shl desp;
      writeln('  Resultado del Desplazado a la Izquierda = ',ti);
      writeln('  Resultado del Desplazado a la Derecha   = ',td);
      readkey;
    end;
 
 
 
 
 
     begin
      clrscr;
      write('  Entre Numero : ');
      readln(nu);
      write('  Entre Desplazamiento :');
      readln(desp);
      despla_izq_der(nu,desp);
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Arcángel

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por Arcángel (5 intervenciones) el 04/02/2015 00:04:18
Si funciona me resulto bastante util la primera respuesta, 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

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por ramon (2158 intervenciones) el 04/02/2015 21:09:29
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
`[Mira estomas ]
 
 program desplazamientos;
 uses
   crt;
  var
    td, ti, nu, desp : longint;
    ss : string[20];
 
    procedure despla_izq_der(nu, desp : longint);
    begin
      writeln('  El numero a desplazar ',desp,' posiciones = ',nu);
      ti := nu shr desp;
      td := nu shl desp;
      writeln('  Resultado del Desplazado a la Derecha = ',ti);
      writeln('  Resultado del Desplazado a la  Izquierda = ',td);
      writeln;
    end;
 
  function digitos(n : longint) : longint;
  var
    long : string[40];
  begin
     str(n,long);
     digitos := length(long);
  end;
 
   procedure pares_nones(nn : longint);
   var
     p, t, digi : longint;
     pasa, stri : string[50];
     gg, erro : integer;
   begin
      gg := 1;
      str(nn,stri);
      digi := digitos(nn);
      for t := 1 to digi do
      begin
         if (ord(stri[t]) - 48) mod 2 = 0 then
         begin
            p := ord(stri[t]) - 48;
            p := p shr 1;
            pasa[gg] := chr(p + 48);
            pasa[0] := chr(gg);
            gg := gg + 1;
         end
      else
         begin
            p := ord(stri[t]) - 48;
            p := p shl 1;
            pasa[gg] := chr(p + 48);
            pasa[0] := chr(gg);
            gg := gg + 1;
         end;
      end;
        val(pasa,digi,erro);
        if erro <> 0 then
        begin
          delete(pasa,erro,1);
          val(pasa,digi,erro);
        end;
        writeln('  pares Desplazado a la Derecha y impares a la izquierda en 1 = ',digi);
   end;
 
 
     begin
      clrscr;
      write('  Entre Numero : ');
      readln(nu);
      write('  Entre Desplazamiento :');
      readln(desp);
      clrscr;
      writeln;
      despla_izq_der(nu,desp);
      pares_nones(nu);
      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
2
Comentar
Imágen de perfil de Arcángel

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por Arcángel (5 intervenciones) el 04/02/2015 23:18:53
Otro exito Ramon, gracias por la ayuda tu si que eres un buen colega.
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

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por ramon (2158 intervenciones) el 05/02/2015 21:29:29
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
[mas a ver]
program desplazamientos;
 uses
   crt;
var
    td, ti, nu, desp : longint;
    multp : string[5];
    ss : string[20];
 
    procedure despla_izq_der(nu, desp : longint);
    begin
      writeln('  El numero a desplazar ',desp,' posiciones = ',nu);
      ti := nu shr desp;
      td := nu shl desp;
      writeln('  Resultado del Desplazado a la Derecha = ',ti);
      writeln('  Resultado del Desplazado a la  Izquierda = ',td);
      writeln;
    end;
 
  function digitos(n : longint) : longint;
  var
    long : string[40];
  begin
     str(n,long);
     digitos := length(long);
  end;
 
   procedure pares_nones(nn : longint);
   var
     p, t, digi : longint;
     pasa, stri : string[50];
     gg, erro : integer;
   begin
      gg := 1;
      str(nn,stri);
      digi := digitos(nn);
      for t := 1 to digi do
      begin
         if (ord(stri[t]) - 48) mod 2 = 0 then
         begin
            p := ord(stri[t]) - 48;
            p := p shr 1;
            pasa[gg] := chr(p + 48);
            pasa[0] := chr(gg);
            gg := gg + 1;
         end
      else
         begin
            p := ord(stri[t]) - 48;
            p := p shl 1;
            pasa[gg] := chr(p + 48);
            pasa[0] := chr(gg);
            gg := gg + 1;
         end;
      end;
        val(pasa,digi,erro);
        if erro <> 0 then
        begin
          delete(pasa,erro,1);
          val(pasa,digi,erro);
        end;
        writeln('  pares Desplazado a la Derecha y impares a la izquierda en 1 = ',digi);
   end;
 
procedure numerotresdigitos;
   var
     mm, i, suma : integer;
     stri : string[3];
     begin
        writeln('   Numeros de 3 digitos cuya suma del cubo sea el Mismo ');
        writeln;
        for nu := 100 to 999 do
        begin
           str(nu,stri);
           suma := 0;
           for i := 1 to length(stri) do
           begin
              mm := 0;
              mm := ord(stri[i]) - 48;
              mm := ((mm * mm) * mm);
              suma := suma + mm;
           end;
           if suma = nu then
           writeln('   Numero =',nu,'  Suma = ',suma);
        end;
     end;
 
 
 
begin
      clrscr;
      write('  Entre Numero : ');
      readln(nu);
      write('  Entre Desplazamiento :');
      readln(desp);
      clrscr;
      writeln;
      despla_izq_der(nu,desp);
      pares_nones(nu);
      writeln;
      numerotresdigitos;
      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
2
Comentar
Imágen de perfil de Arcángel

Ayuda con PROBLEMAS DE DÍGITOS

Publicado por Arcángel (5 intervenciones) el 06/02/2015 01:26:47
Estupendo como siempre Ramon se te ocurren muy buenas ideas de resolucion de problemas.
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