Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2013
Subliminalz Subliminalz is offline
Registrado
NULL
 
Registrado: abr 2013
Posts: 7
Poder: 0
Subliminalz Va por buen camino
Suma de dígitos primos - Simplificar código

Hola, como están, espero que muy bien y con ánimos de ayudar, tengo un pequeño código que suma los dígitos primos de cualquier combinación de números que el usuario teclee, quisiera saber ¿cómo simplifico el código?, los dígitos van del 1 al 9.

-Si el usuario teclea: 245896, entonces los primos son: 2 y 5, y la suma de estos 2 primos es: 7...
-Si el usuario teclea: 221479, entonces los primos son: 2, 2, 7 y la suma de estos 3 primos es: 11...

No sé qué hacer con esas excepciones que he puesto allí, en total 4, donde "r (residuo)" tiene que ser distinto de: 1, 4, 6 y 9... ¿Qué puedo hacer para simplificar esta operación?, pensé en hacerlo con la fórmula de series, pero se complica más, al menos para mí... trate de hacerlo de otra manera pero se me queda el 2, ya que es par...

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var r,x,s:integer;
begin
  x:=StrToInt(Edit1.Text);
  s:=0;
  repeat
  r:=x mod 10;
  x:=x div 10;
  if r<>1 then
  if r<>4 then
  if r<>6 then
  if r<>9 then
  if r div 2<=3 then
  s:=r+s;
  until x=0;
  Edit1.Text:=IntToStr(s);
end;

Proyecto hecho en Delphi XE3, muchas gracias por su ayuda... y consejos que me puedan brindar...
Responder Con Cita
  #2  
Antiguo 11-06-2013
WkaymQ48 WkaymQ48 is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 43
Poder: 0
WkaymQ48 Va por buen camino
Que tal así:
Código Delphi [-]
function Suma(Str: String): Integer;
var
  i: Integer;
begin
  Result:= 0;
  for i:= 1 to Length(Str) do
    if Str[i] in ['1','2','3','5','7'] then
      Result:= Result + StrToInt(Str[i]);
end;  

// Por ejemplo
Edit1.Text:= IntToStr(Suma(Edit1.Text));
Responder Con Cita
  #3  
Antiguo 11-06-2013
Subliminalz Subliminalz is offline
Registrado
NULL
 
Registrado: abr 2013
Posts: 7
Poder: 0
Subliminalz Va por buen camino
Excelente

Si amigo, creo que la mejor opcion era ponerle los numeros primos y que me ignore todos los demas, jeje... esta genial el codigo, le puse un begin al Edit1 y ya me funciona, muchas gracias WkaymQ48...
Responder Con Cita
  #4  
Antiguo 12-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 Subliminalz.

Sólo como agregado, si quisieras obtener la suma a partir de un valor numérico:
Código Delphi [-]
function SumarDigitosPrimos(Numero: Integer): Integer;
var
  i, Digito: Integer;
begin
  Result := 0;
  while Numero > 0 do
  begin
    Digito := Numero mod 10;
    if Digito in [1,2,3,5,7] then
      Inc(Result, Digito);
    Numero := Numero div 10;
  end;
end;

// llamada
...
begin
  ShowMessage(IntToStr(SumarDigitosPrimos(12357)));
end;

Saludos.
__________________
Daniel Didriksen

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



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con numeros primos Jcn Varios 4 28-05-2013 01:39:20
Simplificar el uso de if al usar RadioGroup wull OOP 8 07-09-2012 20:35:09
Promedio.. digitos primos .. luisito2011 Varios 3 07-05-2011 02:54:02
Ayuda para Simplificar codigo escorpionrojo43 OOP 7 08-05-2010 17:55:48
Simplificar Seguridad En Random amonxanubis4 Varios 1 14-01-2010 11:46:59


La franja horaria es GMT +2. Ahora son las 11:29:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi