Pascal/Turbo Pascal - numeros

   
Vista:

numeros

Publicado por marios (58 intervenciones) el 01/04/2014 16:33:00
hola necesito ayuda , para preparar mi examen, este salio el año pasado y quisiera estar con precausion por si lo repite el profesor ,agradezco su ayuda pronta gracias

Los números vampiros son producto de dos números progenitores que cuando se multiplican, se mezclan con el resultado. Por ejemplo la siguiente multiplicación produce un número vampiro: 27 X 81 = 2187. Esto se debe a que los dígitos 2, 7, 8 y 1 se encuentran tanto en el resultado como en los números progenitores. Otro ejemplo puede ser 1,435 el cual es el resultado de 35 X 41. Un verdadero número vampiro cumple los siguientes requisitos:
1. Tienen una cantidad par de dígitos.
2. Cada uno de los números progenitores tiene la mitad de los números del resultado.
3. Un verdadero número vampiro no se crea al incluírsele ceros al final. Por ejemplo 270,000 X 810,000 = 218,700,000,000 no es un verdadero número vampiro
Haga un programa pascal que calcule los verdaderos números vampiros de 4 (progenitores = 2 dígitos), 6 (progenitores = 3 dígitos) y 8 (progenitores = 4 dígitos) dígitos.
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

numeros

Publicado por ramon (2072 intervenciones) el 02/04/2014 12:30:00
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
{Mira esto}
 
program numeros;
  uses
     crt;
 
   var
     num, num1 : word;
 
   function espar(n : word) : boolean;
   var
     tex : string[18];
     i : word;
   begin
       str(n,tex);
       i := length(tex);
       if i mod 2 = 0 then
        espar := true
     else
        espar := false;
   end;
 
   procedure ordena(var c : string);
   var
     t, i : integer;
     d : char;
    begin
       for i := 1 to length(c) do
         for t := length(c) downto i + 1 do
         if c[i] > c[t] then
         begin
            d := c[i];
            c[i] := c[t];
            c[t] := d;
         end;
    end;
 
  function progenitores(n1, n2 : word) : boolean;
  var
    cad1, rec1 : string;
    resu, todo : string;
    resultado : word;
    i : integer;
  begin
     str(n1,cad1);
     str(n2,rec1);
     resultado := n1 * n2;
     str(resultado,resu);
     todo := copy(cad1,1,length(cad1)) + copy(rec1,1,length(rec1));
     ordena(todo);
     ordena(resu);
     if todo = resu then
     progenitores := true
  else
     progenitores := false;
  end;
 
 
 
  begin
      clrscr;
      write('  Entre Multilicando  : ');
      readln(num);
      write('  Entre Multiplicador : ');
      readln(num1);
      writeln('  Multiplicacion = ',num,' * ',num1,'  = ',num * num1);
      writeln('  El Numero Es Vampiro = ',progenitores(num,num1));
      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

numeros

Publicado por marios (58 intervenciones) el 02/04/2014 16:12:53
Hola Ramon , ates agradecerte inmensamente tu ayuda.
Ramon una cosita es que al probar tu programa con numeros de tres e incluso 4 cifras no lo esta haciendo correctamente . porejemplo si entramos los numeros 681 *
759
____________
516879

el cual si seria un numero vampiro, y el programa esta haciendo dos cosas mal en estos casos:
el resultado de la multiplicacion no esta dando correctamente y el mensaje sale que no es un numero vampiro, podrias modificarlo para que el programa pidiese que el usuario Indique la cantidad de dígitos del numero vampiro a verificar (4,6,8): donde 4 (progenitores = 2 dígitos), 6 (progenitores = 3 dígitos) y 8 (progenitores = 4 dígitos) dígitos.

y b ) como seria si se pide porejemplo ahora como una modificacion al programa que se muestren en pantalla todos los numero vampiros de 4 digitos( `progenitores = 2 digitos , porejemplo 21 y 60 serian los progenitores) y uno de los numeros que deberia mostrar el programa seria para este caso 1260 que si que es un numero vampiro, pero claro esto es un solo ejemplo de numero vampiro de 4 digitos de los muchos que deberia mostrar el programa dado que se pide en esta parte b) todos los vampiros de 4 digitos

gracias por todo lo que haces Ramon, sigo animado aprendiendo 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

numeros

Publicado por ramon (2072 intervenciones) el 04/04/2014 00:33:53
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
{Disculpa cometí un pequeño fallo de longitud a qui tienes}
 
program numeros;
  uses
     crt;
 
   var
     num, num1 : longint;
 
   function espar(n : longint) : boolean;
   var
     tex : string[18];
     i : word;
   begin
       str(n,tex);
       i := length(tex);
       if i mod 2 = 0 then
        espar := true
     else
        espar := false;
   end;
 
   procedure ordena(var c : string);
   var
     t, i : integer;
     d : char;
    begin
       for i := 1 to length(c) do
         for t := length(c) downto i + 1 do
         if c[i] > c[t] then
         begin
            d := c[i];
            c[i] := c[t];
            c[t] := d;
         end;
    end;
 
  function progenitores(n1, n2 : longint) : boolean;
  var
    cad1, rec1 : string;
    resu, todo : string;
    resultado : longint;
    i : integer;
  begin
     resultado := (n1 * n2);
     str(n1,cad1);
     str(n2,rec1);
     str(resultado,resu);
     todo := copy(cad1,1,length(cad1)) + copy(rec1,1,length(rec1));
     ordena(todo);
     ordena(resu);
     if todo = resu then
     progenitores := true
  else
     progenitores := false;
  end;
 
  procedure cuatrodigitos;
  var
    t1, h1 : integer;
  begin
    for t1 := 10 to 99 do
     for h1 := 10 to 99 do
     if progenitores(t1,h1) = true then
     writeln(t1,' * ',h1,' = ',t1 * h1);
  end;
 
  begin
      clrscr;
      write('  Entre Multilicando  : ');
      readln(num);
      write('  Entre Multiplicador : ');
      readln(num1);
      writeln('  Multiplicacion = ',num,' * ',num1,'  = ',num * num1);
      writeln('  El Numero Es Vampiro = ',progenitores(num,num1));
      writeln;
      writeln('  Pulse Una Tecla ');
      readkey;
      clrscr;
      cuatrodigitos;
      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

numeros

Publicado por marios (58 intervenciones) el 04/04/2014 11:42:39
hola ramon, disculpa mira es que para el numero:
1982736 *
8452080
-----------------
16758243290880

falla tanto la multiplicacion , es decir el resultado de la multiplicacion da incorrecto y ademas dice que no es numero vampiro cuando si lo es, que puede estar fallando, ??? gracias ramon por revizarlo y decirmelo

y segunda pregunta:

cuando generas los vampiros de 4 cifras, como podria modificarse tu programa para que no se repitan, es decir la cantidad de estos numeros seria en total 7, pero a ti te salen 14 por que se repiten 7 podrias indicarme como seria, 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

numeros

Publicado por marios (58 intervenciones) el 10/04/2014 23:04:16
hola ramon, espero tu ayuda respecto a lo que te comente en el mensaje anterior, mil gracias es que pronto sera el examen y no quiero que este ejercicio sea el que salga nuevamente pues fue del semestre pasado.
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

numeros

Publicado por marios (58 intervenciones) el 11/04/2014 23:43:13
hola ramon, ante todo no quieor serte pesado , solo intento prepararme para el examen y quisiera por favor no dejes de pasar mi anterior mensaje al respecto de este post, muchiismas gracias eres un crack, y estoy aprendiendo incluso mas que en clase gracias a ti.
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

numeros

Publicado por marios (58 intervenciones) el 16/04/2014 12:13:34
hola ramon, ante todo no quieor serte pesado , solo intento prepararme para el examen y quisiera por favor no dejes de pasar mi anterior mensaje al respecto de este post, muchiismas gracias eres un crack, y estoy aprendiendo incluso mas que en clase gracias a ti.
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