Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 3 Semanas
einer einer is offline
Registrado
 
Registrado: Aug 2018
Posts: 5
Poder: 0
einer Va por buen camino
programar deteccion de ultimos digitos pares en vectores

muy buenas vengo a pedir ayuda con mi proyecto
les explipco...
mi proyecto trata de identificar los numeros que tengan los pirmeros digitos pares como por ejemplo 243 el 2 y el 4 son los primeros digitos y son pares asi que un contador suma cuantos numeros introducidos tienen esa caracteristica (de los primeros 2 pares) no eh logrado concretarlo mas alla de que detecto por separado los numeros pares de cada numero introducido (por ejemplo si coloco 234 y 647 me sale como resultado *3* por el 2 y luego el 6 y el 4....) pero la idea es que salga 1 por que solo 1 de los 2 digitos lleva los primeros pares...

ayudenme por favor dejare adjunto lo que hice hasta ahora
psdt: es la parte final arriba hay sobre vectores

Código Delphi [-]

//////////////////// en este procedimiento es mi problema///////////////////////////////////


procedure TForm1.Button7Click(Sender: TObject);
var
nro,contador,i,a:integer;
nrox,contadorx,ix,ax:integer;
contadorfinal:integer;
begin

  i:=1;
  contador:=0;
  ix:=1;
  contadorx:=0;
    while i<=N do
      begin
        nro:=v[i];
        while nro>9 do////////////////////
          begin
            nro:=nro div 10;
           end;
          if (nro mod 2)=0 then
          contador:= contador+1;
          i:=i+1;

        end;                          //hasta aqui se detecta  el 1°
   /////////////////////////////////////////////////////////////////////////////

   //desde aqui se detecta el 2° par


   while ix<=N do
      begin
        nrox:=v[i];
        while nrox>99 do////////////////////
          begin
            nrox:=nrox div 10;
           end;
          if (nrox mod 20)<=10 then
          contadorx:= contadorx+1;
          ix:=ix+1;
          contadorfinal:=contador+contadorx;

          contadorfinal:=contadorfinal+1;
        end;

   label4.Caption:=inttostr(contadorfinal);
end;
end.

Última edición por Neftali [Germán.Estévez] fecha: Hace 3 Semanas a las 11:07:54.
Responder Con Cita
  #2  
Antiguo Hace 3 Semanas
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: Nov 2005
Posts: 1.079
Poder: 14
ElKurgan Va por buen camino
Hola, Einer...

Si no te he entendido mal, para un array con estos valores "234, 243, 675, 667, 444" te debería devolver 3, ¿no? (sólo comienzan con dos pares el 243, el 667 y el 444).

Tal como lo planteas, la primera pasada me daría 5 puesto que todos empiezan por un par... Y luego lo sumas a contador final, con lo que el resultado final me da... ¡¡¡ 11 !!!

Creo que debería ser así:

Código Delphi [-]
var
  nrox, ix: integer;
  contadorfinal: integer;
  numero1, numero2: integer;
begin
  contadorfinal := 0;

  while ix <= N do
  begin
    nrox := v[ix];
    // Número tiene que ser mayor o igual a 10 para que sean pares
    if nrox >= 10 then
    begin
      while nrox > 99 do////////////////////
      begin
        nrox := nrox div 10;
      end;
      numero1 := nrox div 10;
      numero2 := nrox - (numero1 * 10);
      if (not odd(numero1)) and (not odd(numero2)) then
        contadorfinal := contadorfinal + 1;
      end;
    ix := ix + 1;
  end;

  label4.Caption:=inttostr(contadorfinal);

Espero haberte entendido bien

Un saludo
Responder Con Cita
  #3  
Antiguo Hace 3 Semanas
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.725
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Por favor einer, utiliza TAG's cuendo añadas código a los mensajes.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo Hace 3 Semanas
einer einer is offline
Registrado
 
Registrado: Aug 2018
Posts: 5
Poder: 0
einer Va por buen camino
hola gracias por tu respuesta..
intente con lo que me dices pero no sale el resultado que deberia... tomando el ejemplo que tu pones "234, 243, 675, 667, 444" el resultado deberia ser 3 por que solo 3 digitos llevan los 2 ultimos pares el 243 667 y 444
Responder Con Cita
  #5  
Antiguo Hace 3 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.126
Poder: 30
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.

Un modo es:
Código Delphi [-]
function FirstTwoPairs(Number: Integer): Boolean;
var
  Invert, Rest: Integer;
begin
  Invert := 0;
  while Number > 0 do
  begin
    Rest   := Number mod 10;
    Invert := Invert * 10 + Rest;
    Number := Number div 10;
  end;
  Result := ((Invert mod 10 mod 2)=0) and ((Invert mod 100 div 10 mod 2)=0);
end;

Otro:
Código Delphi [-]
function FirstTwoPairs(const Number: Integer): Boolean;
var
  s: string;
  a,b: Integer;
begin
  a := StrToInt(IntToStr(Number)[1]);
  b := StrToInt(IntToStr(Number)[2]);
  Result := (a mod 2 = 0) and (b mod 2 = 0);
end;

Ej. de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
 v  : array[1..5] of Integer = (234, 243, 675, 667, 444);
var
  i : Integer;
begin
  Memo1.Clear;
  for i := Low(V) to High(V) do
    if FirstTwoPairs(v[i]) then
     Memo1.Lines.Add(IntToStr(v[i]));
end;

Saludos
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: Hace 3 Semanas a las 23:39:22.
Responder Con Cita
  #6  
Antiguo Hace 3 Semanas
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: Nov 2005
Posts: 1.079
Poder: 14
ElKurgan Va por buen camino
El que te envíe me funciona sin problemas, asi que te debería funcionar también.

Pero, como siempre, el código de ecfisa es mucho más claro y eficiente...

Saludos
Responder Con Cita
  #7  
Antiguo Hace 3 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.126
Poder: 30
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
Jajaja eso sí que es exagerado !

Saludos
__________________
Daniel Didriksen

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Cumpleaños a pares :) Casimiro Notevi La Taberna 5 10-11-2011 08:39:47
Sacar promedio de Nro.. pares luisito2011 Varios 8 02-05-2011 21:14:01
Cumpleaños a pares Casimiro Notevi La Taberna 6 14-10-2010 17:55:09
Como tomo los nro pares de un select tulio SQL 2 22-04-2009 14:16:13
Colorear filas pares rxDBGrid?????? mguixot OOP 1 08-09-2003 16:50:52


La franja horaria es GMT +2. Ahora son las 04:13:47.


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