Ver Mensaje Individual
  #3  
Antiguo 30-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Aleix47.

Esta es una forma de hacerlo:
Código Delphi [-]
procedure TForm1.HallarNumeros(const Desde, Hasta: Integer; TS:TStrings);
var
  i,Lar: Integer;
  n1,n2,n3: Integer;
begin
  for i:= Desde to Hasta do
  begin
    Lar:= (Trunc(Ln(i)/Ln(10))+1) div 2; // Nro de dígitos dividido 2
    n1:= i div Trunc(Exp(Ln(10)*Lar));   // Extraer 1ra mitad del Nro
    n2:= i mod Trunc(Exp(Ln(10)*Lar));   // Extraer 2da mitad del Nro
    n3:= Trunc(Exp(Ln(n1+n2)*2));        // Obtener cuadrado de la sumatoria
    if n3 = i then                       // Si es n3 = al Nro actual(i) agregar
      TS.Add(format('%d: %d+%d => (%d)^2 = %d',[i,n1,n2,n1+n2,n3]));  
    // Sería lo mismo hacer: TS.Add(IntToStr(i)); (salida sin formato)
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
     HallarNumeros(1,1000000,ListBox1.Items);
Documente que es lo que hace cada línea para que puedas analizar el código y te sirva como base para ejercicios del mismo tipo que tuvieras que resolver. Creo que te va a ser de utilidad ya que muestra como obtener el número de dígitos, potencia y algunos detalles más.
Cualquier duda que tengas sobre el funcionamiento, encantado trato de aclarartela.

Pero como te ha dicho oscarac arriba, el próximo mensaje tratá de tener algo preparado y plantea una duda en concreto. No siempre nos vas a encontrar
con con ganas de resolver ejercicios...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita