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 02-05-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
Insertar digito 9 pocision 3

bueno.. aca otro problemita...
// Pida un numero por teclado e inserte el digito 9 en la 3 posicion de dicho numero... Sin usar IF - WHILE - REPEAT //
Tambien utilizando esta unidad..
Ejemplo.. N = 123456789
N = 129456789


Código Delphi [-]
 
Unit caja1;
Interface
Uses
    SysUtils,dialogs;
Type
CEMNumeroNatural = Class(Exception);
    CNumeroNatural = Class
       Private
              Valor : Cardinal;
              Function UnidadesRom(u : Byte ) : string;
       Public
             Constructor Crear;
             Procedure AsignarValor( NuevoValor : Cardinal);
             Procedure InsertarDigito( Posicion : Byte ; Digito : Byte);
             Procedure EliminarDigito( Posicion : Byte );
             Procedure Invertir;
             Function  ObtenerValor : Cardinal;
             Function  NumeroDigitos : Byte;
             Function  Digito( Posicion : Byte ) : Byte;
             Function  EsPrimo : Boolean;
             Function  EsPar : Boolean;
             Function  SumarDigitos : Byte;
             Function  DigitosPares : Byte;
             Function  DigitosImpares : Byte;
         
    End;
Implementation
//PRIVATE
//ROMANOS
Function CNumeroNatural.UnidadesRom(u : Byte) : string;
Var
   Uni : string;
Begin
      Case( u )of
           0: Uni := '';
           1: Uni := 'I';
           2: Uni := 'II';
           3: Uni := 'III';
           4: Uni := 'IV';
           5: Uni := 'V';
           6: Uni := 'VI';
           7: Uni := 'VII';
           8: Uni := 'VIII';
           9: Uni := 'IX';
      End;
      Result := Uni;
End;

//PUBLIC
Constructor CNumeroNatural.Crear;
Begin
     Valor := 0;
End;
Procedure CNumeroNatural.AsignarValor( NuevoValor : Cardinal);
Begin
     Valor := NuevoValor;
End;
Procedure CNumeroNatural.InsertarDigito     ( Posicion : Byte ; Digito : Byte);
Var
   Aux , Aux2 , Digi :Cardinal;
Begin
     Aux := Valor;
     If( Posicion > 0)and( Posicion <= NumeroDigitos )Then
     Begin
          Aux2 := 0;           Digi := 0;
          While( Digi <= NumeroDigitos-Posicion )do
          Begin
               Aux2 := ( Aux2 * 10 ) + Aux Mod 10;    Aux  :=   Aux Div 10;      Inc( Digi );
          End;
          Aux := ( Aux * 10 ) + Digito;//Inserta Digito
          While( Digi > 0 )do
          Begin
             Aux   := ( Aux * 10 ) + ( Aux2 Mod 10 );  Aux2  :=   Aux2 Div 10;      Dec( Digi );
          End;
          Valor := Aux;
     End
     Else
       Raise CEMNumeroNatural.Create
         ('CNumeroNatural.InsertarDigito: Error Fuera de RANGO...');
End;
Procedure CNumeroNatural.EliminarDigito( Posicion : Byte );
Var
   Aux , Aux2 , Digi :Cardinal;
Begin
     Aux := Valor;
     If( Posicion > 0)and( Posicion <= NumeroDigitos )Then
     Begin
          Aux2 := 0;
          Digi := 0;
          While( Digi < NumeroDigitos-Posicion )do
          Begin
               Aux2 := ( Aux2 * 10 ) + Aux Mod 10;
               Aux  :=   Aux Div 10;
               Inc( Digi );
          End;
          Aux := ( Aux Div 10 );//Elimina Digito
          While( Digi > 0 )do
          Begin
             Aux   := ( Aux * 10 ) + ( Aux2 Mod 10 );
             Aux2  :=   Aux2 Div 10;
             Dec( Digi );
          End;
          Valor := Aux;
     End
     Else
       Raise CEMNumeroNatural.Create
            ('CNumeroNatural.EliminarDigito: Error Fuera de RANGO...');
End;
Procedure CNumeroNatural.Invertir;
Var
   Aux , Aux2 , i :Cardinal;
Begin
     Aux2 := Valor;
     Aux  := 0;
     i    := 0;
     While( i < NumeroDigitos )do
     Begin
          Aux  := ( Aux * 10 ) + Aux2 Mod 10;
          Aux2 :=   Aux2 Div 10;
          Inc( i );
     End;
     Valor := Aux;
End;
Function  CNumeroNatural.ObtenerValor : Cardinal;
Begin
     Result := Valor;
End;
Function  CNumeroNatural.NumeroDigitos : Byte;
Var
   Aux : Cardinal;
   Cant : Byte;
Begin
     Aux := Valor;
     Cant := 0;
     Repeat
        Aux := Aux Div 10;
        Inc( Cant );
     Until(Aux = 0);
     Result := Cant;
End;
Function  CNumeroNatural.Digito( Posicion : Byte ) : Byte;
Var
   Aux : Cardinal;
   Digi , Digito : Byte;
Begin
     Aux := Valor;
     Digi := 0;
     if( Posicion > 0 )and( Posicion <= NumeroDigitos )then
     Begin
          Repeat
             Digito := Aux Mod 10;
             Aux := Aux Div 10;
             Inc( Digi );
          Until( Digi > NumeroDigitos-Posicion );
          Result := Digito;
     End
     Else
         Raise CEMNumeroNatural.Create
               ('CNumeroNatural.Digito: Error Fuera de RANGO...');
End;




Function  CNumeroNatural.EsPrimo : Boolean;
Var
   i , n : word;
   sw  : boolean;
Begin
      sw := true;
      i  := 2;
      while(i <= ( Valor div 2 ) ) and ( sw = true ) do
      Begin
           n := Valor mod i;
           if( n = 0 )then
              sw := false;
           i := i + 1 ;
      End;
      result := sw;
End;
Function  CNumeroNatural.EsPar : Boolean;
Begin
  Result := (valor mod 2)= 0 ;
End;
Function  CNumeroNatural.SumarDigitos : Byte;
Var
   Aux , Suma : Cardinal;
Begin
     Aux := Valor;
     Suma := 0;
     Repeat
        Suma := Suma +( Aux Mod 10 );
        Aux := Aux Div 10;
     Until( Aux = 0 );
     Result := Suma;
End;
Function  CNumeroNatural.DigitosPares : Byte;
Var
   Aux : Cardinal;
   Cant , Digito : Byte;
Begin
     Aux := Valor;
     Cant := 0;
     Repeat
        Digito := Aux Mod 10;
        Aux := Aux Div 10;
        If( Digito mod 2 = 0 )Then
            Inc( Cant );
     Until( Aux = 0 );
     Result := Cant;
End;
Function  CNumeroNatural.DigitosImpares : Byte;
Begin
     Result := NumeroDigitos-DigitosPares;
End;
End.

Última edición por luisito2011 fecha: 02-05-2011 a las 20:26:27.
Responder Con Cita
  #2  
Antiguo 02-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
puedes usar la instruccion Copy

Código Delphi [-]
 
copy (cadena,1,2) + '9' + copy(cadena,3,maxint(cadena)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 02-05-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
Necesito resolver el ejercicio usando.. la Unit.. que esta arriba
Responder Con Cita
  #4  
Antiguo 02-05-2011
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues la unit trae este procedimiento:

Procedure CNumeroNatural.InsertarDigito ( Posicion : Byte ; Digito : Byte);
Responder Con Cita
  #5  
Antiguo 02-05-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
ups... y como la uso... pliz
Responder Con Cita
  #6  
Antiguo 02-05-2011
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
Pero Luisito... vos mismo hiciste esa función, se supone que deberías saber como se la llama...

Tomando en cuenta el título: 'Insertar digito 9 pocision 3', creo que sería:
Código Delphi [-]
var
  nn: CNumeroNatural;
begin
  ...
  nn.Valor:= 123456789;
  nn.InsertarDigito(3, 9);
  ...
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 02-05-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
mm.. si ... toncej se supone que deveria quedar ai
pero me sale error

Código Delphi [-]
 
var
  a: CNumeroNatural;
  x:integer;
begin
a:=cnumeronatural.Crear;
WriteLn('Digite Un Numero'); Readln(x);
A.AsignarValor(x);
WriteLn('Nuevo Numero ',a.InsertarDigito(3,9));
readln;

Creo que es.. la forma como llamo.. aver si me corrigen
saludos
Responder Con Cita
  #8  
Antiguo 02-05-2011
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 Luisito.

Creo que deberías mostrarlo así:
Código Delphi [-]
var
  a: CNumeroNatural;
  x:integer;
begin
  a:=cnumeronatural.Crear;
  WriteLn('Digite Un Numero'); Readln(x);
  A.AsignarValor(x);
  a.InsertarDigito(3,9); 
  WriteLn('Nuevo Numero ',a.ObtenerValor);
  readln;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 03-05-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Creo que es.. la forma como llamo.. aver si me corrigen
mm.. si ... entonces(no era una palabra) se supone que debería(con B) quedar así(tampoco era una palabra)
pero me sale un error

Código Delphi
[...]

Creo que es la forma como llamo a la función. A ver (con espacio, son dos palabras) si me corrigen
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
Eliminar un digito y mostrar el digito eliminado luisito2011 Varios 17 01-04-2011 05:27:17
Dígito Verhoeff Antonio Rosas E OOP 1 04-10-2007 23:51:19
Comparar un number dígito a dígito kuan-yiu SQL 2 25-06-2007 17:26:47
Orden aleatorio al 7o digito!!! jdattoli Tablas planas 1 20-10-2005 18:15:09
Modificar un str dígito a dígito fortran Varios 11 22-12-2003 16:44:46


La franja horaria es GMT +2. Ahora son las 06:59:34.


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