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 31-03-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
Talking Eliminar un digito y mostrar el digito eliminado

hola bueno tengo un problemita...necesito adicionar a este codigo..
2 funciones oh 2 procesos...
el cual 1 me elimine cualquier digito de un numero
y otro que muestre el digito eliminado
Código Delphi [-]
 
type
  numero=record
    valor : integer;
  end;

procedure asignarvalor(var n:numero; que:integer);
begin
  n.valor:=que
end;

function obtenervalor(n:numero):integer;
begin
  obtenervalor:=n.valor;
end;

procedure crear(var N:numero);
begin
  n.valor:=0;
end;

function nrodigitos(N:numero):integer;
var 
  c:integer;
begin
  c:=0;
  while n.valor>0 do
  begin
    c:= c+1;
    n.valor:=n.valor div 10;
  end;
  nrodigitos:=C;
end;

var
  a:numero;
  k:integer;
begin
  crear(A);
  readln (K);
  asignarvalor(A,k);
  writeln('El numero es ',obtenervalor(a));
  writeln('el numero de digitos es ',nrodigitos(A));
  readln;
end

saludos. y gracias

Última edición por ecfisa fecha: 31-03-2011 a las 03:55:19. Razón: Etiquetas DELPHI, identación
Responder Con Cita
  #2  
Antiguo 31-03-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 luisito2011.
Cita:
necesito adicionar a este codigo..
2 funciones oh 2 procesos...
el cual 1 me elimine cualquier digito de un numero y otro que muestre el digito eliminado
En realidad no necesitas dos procedimientos o funciones, te podes arreglar con una función:
Código Delphi [-]
...
function EliminarDigito(var n: numero; Pos:Integer): Integer;
var
  s: string;
  r,cd: Integer;
begin
  Str(n.valor, s);     (* convertir a string *)
  Val(s[Pos], r, cd);  (* valor dígito eliminado en r *)
  Delete(s, Pos, 1);   (* borrar dígito *)
  Val(s, n.valor, cd); (* convertir (numero - digito) a integer *)
  EliminarDigito:= r;  (* devuelve valor dígito eliminado *)
end;


var
  a:numero;
  k:integer;
  d:Integer;
begin
  crear(A);
  write('Numero: '); Readln(K);
  AsignarValor(a, k);
  Writeln('El numero es ', obtenervalor(a));
  Writeln('el numero de digitos es ',nrodigitos(A));
  Write('Digito a eliminar: '); Readln(d);
  Writeln('Digito eliminado: ',EliminarDigito(a, d));
  Readln;
end.

Nota: Usé sintáxis Pascal por si te es requerido. Toda explicación del uso de las funciones la encontras en la ayuda de Pascal/Delphi.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 31-03-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
muy buena respuesta.. gracias.. en realidad necesitaba en 2 funciones o procesos.. por que el que 1 elimina.. tenia que ponerla en un until.. el cual despue pueda usarlo en console application.. pero esta bien .. gracias ..
saludos
Responder Con Cita
  #4  
Antiguo 31-03-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola,

¿Puedo preguntar que significa eliminar un dígito? Porque yo al menos entiendo dos posibles razonamientos. Supongamos que tenemos el número 4562. Se eliminará el 6:

Opción 1: Nos queda un número de 3 cifras:
4562 -> 45X2 -> 452

Opción 2: Restamos 6 decenas al número, sigue siendo de 4 cifras:

4562 - 60 = 4502.

¿Se entiende?

Por cierto... eso de convertir a string para luego pasarlo a integer me parece más un intento de cañonazo. Se que este artilugio puede resultar fácil, y reducir líneas... pero si en es que luisito está recién comenzando en programación en alguna universidad o instituto me parece que el objetivo del profe no es que vaya a por esos artilugios sino que exprima su capocha hasta encontrar un algoritmo que no recurra a esas técnicas sino que lo haga de forma directa (que se puede).

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 31-03-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Me parece que se trata de la primera Opcion...Delphius... y estoy totalmente de acuerdo contigo en que la solucion debería ser usando solo número, sin recurrir a la transformacion hacia String; lógicamente eso implica más trabajo, es verdad, pero si se trata de que nuestro amigo luisito2011 aprenda, pues hay que ponerse a trabajar en buscar una solucion usando solo numero. Claro ésta que ecfisa solo quizo ayudar y su solucion es totalmente válida si se trata de solucionar problemas de programacion de cualquier forma, pero si por el contrario es para aprender supongo que el profesor debería restringir la conversion a String y solo permitir una solucion basada en operaciones matemáticas numerales, tal como lo hacía mi catedrático cuando estaba dando mis primeros pininos en programación ....,la verdad que no me gustaba por que desde mi punto de vista tal restrincion me complicaba la vida, en aquel entonces, pero pude lidiar con una solucion correcta tal como lo quería el catedrático.. y eso me ayudó mucho a desarrolar mi lógica, aunque todavía sigue en proceso .
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 31-03-2011
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Solo a manera de dato curioso:

Numero de digitos = Logaritmo (numero) +1;

Un saludo,
Responder Con Cita
  #7  
Antiguo 31-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius Ver Mensaje
Por cierto... eso de convertir a string para luego pasarlo a integer me parece más un intento de cañonazo. Se que este artilugio puede resultar fácil, y reducir líneas... pero si en es que luisito está recién comenzando en programación en alguna universidad o instituto me parece que el objetivo del profe no es que vaya a por esos artilugios sino que exprima su capocha hasta encontrar un algoritmo que no recurra a esas técnicas sino que lo haga de forma directa (que se puede).
Cita:
Empezado por rgstuamigo Ver Mensaje
Me parece que se trata de la primera Opcion...Delphius... y estoy totalmente de acuerdo contigo en que la solucion debería ser usando solo número, sin recurrir a la transformacion hacia String; lógicamente eso implica más trabajo, es verdad, pero si se trata de que nuestro amigo luisito2011 aprenda, pues hay que ponerse a trabajar en buscar una solucion usando solo numero.
Totalmente en desacuerdo

Para mi es claro que se trata de un ejercicio de manipulación de caracteres y no de aritmética.

Si se busca una solución usando operaciones aritméticas realmente no se estaría aprendiendo programación sino eso, aritmética.

// Saludos
Responder Con Cita
  #8  
Antiguo 31-03-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Totalmente en desacuerdo

Para mi es claro que se trata de un ejercicio de manipulación de caracteres y no de aritmética.

Si se busca una solución usando operaciones aritméticas realmente no se estaría aprendiendo programación sino eso, aritmética.

// Saludos
Ufa, y yo que pensé que te tendría como aliado en ésta.
Vaya... entonces ya me lo voy confirmando... sería un profesor bien HDP porque si yo fuera el profe de luisito los obligaría a pensar y no estar pensando en un artilugio de manipulación de caracteres.

Tu dices que se estaría aprendiendo aritmética, pues yo digo que el esfuerzo por pensar en el algoritmo también cuenta (y muchísimo diría yo) y no se trata simplemente de que saquen a repasar aritmética de primaria. Parte del ser un desarrollador es desarrollar el sentido de la lógica, y me parece que apoyarse en problemas de índole matemática es una excelente herramientas para abrirles la cabezota y ayudarles a sacar ingenio, y el poder de abstracción.

Si... ya me digo: sería un buen profe HDP, ¡pobrecitos!

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 31-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Estás confundiendo la magnesia con la gimnasia. ¿Quién te dice que para elaborar un algoritmo de manipulación de caracteres no necesitas pensar? Pensar no es malo. Lo malo está en pensar lo que no cuando no

Yo soy matemático (aunque no ejerzo como tal), y por ello, no rehuyo de un problema de esa índole. Pero si estoy aprendiendo a nadar no pienso en los tenis para correr.

El problema que plantea luisito, dudo que tenga ninguna aplicación práctica. Y, precisamente por ello me queda claro que es un ejercicio para que el alumno aprenda a manipular caracteres.

Otra cosa es que el ejercicio me parece bastante soso. Pero es harina de otro costal

// Saludos
Responder Con Cita
  #10  
Antiguo 31-03-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Cita:
Empezado por roman Ver Mensaje
Totalmente en desacuerdo

Para mi es claro que se trata de un ejercicio de manipulación de caracteres y no de aritmética.

Si se busca una solución usando operaciones aritméticas realmente no se estaría aprendiendo programación sino eso, aritmética.
Pues...creo que lo aclaré, en mi anterior post, todo depende de lo que el profesor quiera lograr..., pues "una cosa es hacer que el estudiante aprenda a utilizar funciones de un leguaje de programación y otra muy distinta es hacer que el estudiante piense, razone y busque la forma de desarrollar su creatividad para resolver sus problemas"; en mi caso aprendí muchos trucos cuando el profesor(catedrático) me restringió el uso de cadenas, e inclusive recuerdo que nos hizo implementar una clase "número natural" donde solo se hacía operaciones con números naturales y cosas similares a las de luisito2011, y pues vaya que me ha servido de mucho aprenderlas.
Ten en cuenta que en la programacion no solo se utiliza el conocimiento del lenguaje que se está usando, sino más bien hay que aprender a desarrollar la lógica.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #11  
Antiguo 31-03-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Estás confundiendo la magnesia con la gimnasia. ¿Quién te dice que para elaborar un algoritmo de manipulación de caracteres no necesitas pensar? Pensar no es malo. Lo malo está en pensar lo que no cuando no

Yo soy matemático (aunque no ejerzo como tal), y por ello, no rehuyo de un problema de esa índole. Pero si estoy aprendiendo a nadar no pienso en los tenis para correr.

El problema que plantea luisito, dudo que tenga ninguna aplicación práctica. Y, precisamente por ello me queda claro que es un ejercicio para que el alumno aprenda a manipular caracteres.

Otra cosa es que el ejercicio me parece bastante soso. Pero es harina de otro costal

// Saludos
Pos que quieres que te diga... si me das un problemas de números te pienso en números. Si me das un problema basado en caracteres, te pienso en caracteres. Así pienso yo. Si el tema de clases, en el momento, fuera sobre tratamiento de strings en lo menos que quisiera que pensaran los chicos es que operen números como strings y este ejercicio estaría totalmente descartado.

Viendo el código de luisito, y su planteo no me suena descabellado pensar en una solución puramente aritmética.

Y precisamente sabiendo que eres matemático (nos los dijiste hace un buen tiempo... cuando se presentó un problema sobre el cálculo de un promedio ) te imaginé ofreciendo un aporte numérico.

Como decía rgstuamigo, si fuera un problema de programación a resolver como venga y salga pues bienvenida sea la propuesta, pero si es de alguna cátedra viendo el código inicialmente expuesto me parece totalmente fuera de gusto que primero venga una propuesta numérica y en el medio semejante manejo de strings para salir de paso.

Yo lo veo desde el punto de vista de un profesor, si... como de los tipo bien HDP Si un alumno me muestra eso le rebajo la nota.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #12  
Antiguo 31-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius Ver Mensaje
Pos que quieres que te diga... si me das un problemas de números te pienso en números. Si me das un problema basado en caracteres, te pienso en caracteres.
Quizá aquí está el problema. Ves un problema de números y de inmediato asumes que es un problema aritmético (y no veo porqué un profesor de programación deba poner problemas aritméticos).

El problema podría estar perfectamente planteado así:

Cita:
Dada una secuencia de caracteres, quite el n-ésimo
y la esencia es la misma.

Cita:
Empezado por Delphius Ver Mensaje
Y precisamente sabiendo que eres matemático (nos los dijiste hace un buen tiempo... cuando se presentó un problema sobre el cálculo de un promedio ) te imaginé ofreciendo un aporte numérico.
Lo haría si la naturaleza del problema fuera numérica. Me parece que no lo es.

Cita:
Empezado por Delphius Ver Mensaje
pero si es de alguna cátedra viendo el código inicialmente expuesto me parece totalmente fuera de gusto que primero venga una propuesta numérica y en el medio semejante manejo de strings para salir de paso.
No se está saliendo del paso. Se estaría resolviendo como se espera, con una manipulación de cadenas.

Cita:
Empezado por Delphius Ver Mensaje
Yo lo veo desde el punto de vista de un profesor, si... como de los tipo bien HDP Si un alumno me muestra eso le rebajo la nota.
De hecho, es así como yo lo veo, desde el punto de vista de un profesor. Y a ti no te rebajaría la nota porque no soy HDP pero sí te explicaría en qué consiste el ejercicio y qué se pretende obtener de él.

// Saludos
Responder Con Cita
  #13  
Antiguo 31-03-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.

Recién retomo el hilo, y bueno... No hay mucho que agregar a lo dicho por román, veo que tuvimos la misma interpretación sobre la naturaleza no numérica del problema.

Cita:
Como decía rgstuamigo, si fuera un problema de programación a resolver como venga
Pensé que de eso se trataba: de un problema de programación a resolver.

También disiento con alusiones como: 'como venga' y 'saliendo del paso', eso le suena a chapuzero a qualquier lector, creo que la función es simple y flexible. Sirve tanto para tratar números cardinales y ordinales como para un código numérico arbitrario. Y agregando un simple parámetro es fácil eliminar más de un dígito.

Además, que exista un método aritmético de hacerlo, no quiere decir que todos los demás métodos sean 'atajos' para evitarlo (convengamos que no es matemática de alto vuelo...), ni quiere decir que sea la mejor opción a aplicar.

Por otro lado y no menos importante, luisito no especificó en ningún momento que debiera resolverse por métodos arítmeticos. Por lo que la metodología a aplicar, siempre que resuelva el problema, es totalmente subjetiva.

Si el profesor tuvo esa o aquella intención... solo él o luisito sabrán...

Un saludo.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 31-03-2011 a las 22:33:01.
Responder Con Cita
  #14  
Antiguo 31-03-2011
luisito2011 luisito2011 is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 82
Poder: 14
luisito2011 Va por buen camino
hola.. a todoj.. gracias por los comentarios..y cosejos
en realidad yo aun estoy aprendiendo..
y la 1ra respuesta del problema que tenia .. si estaba bien..
pero lo que yo buscaba era esto.. que lo resolvi con un conpañero
gracias te todos modos..
---------------------------------------------------------------
Código Delphi [-]
unit caja1;
interface
function eliminar_dig(a,z:integer):integer;
implementation
 function eliminar_dig(a,z:integer):integer;
 var b,c,d,inv,e,f:integer;
 begin
 write('digite numero');
readln(a);
write('digite la posicion a eliminar');
readln(z);
 inv:=0; d:=0; c:=0;  f:=0;
 while a>0 do
 begin
   b:=a mod 10;
   a:= a div 10;
   inv:=inv*10+b;
 end;
   while inv>0 do
   begin
   d:=inv mod 10;
   inv:=inv div 10 ;
   c:=c+1;
   if c<>z then
    begin
      f:= f*10+d
    end;
    eliminar_dig:=f;
 end;
 end;
---aun que la respuesta.. me ayudo a recordar.. del invertir.. los digitos.
---y la ayuda que te dan en este foro es muy bueno.. se les agradece a todos...
saludos

Última edición por luisito2011 fecha: 01-04-2011 a las 00:07:24.
Responder Con Cita
  #15  
Antiguo 01-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ja, ja. Ahora sí le va a dar gusto a Delphius

// Saludos
Responder Con Cita
  #16  
Antiguo 01-04-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Pues claro que me da gusto, porque al final resulta ser que mi intuición era asertada: te dan manzanas, piensa en manzanas... por más que quieran llevarme la contraria

Lo dijo luisito:

Cita:
y la 1ra respuesta del problema que tenia .. si estaba bien..
pero lo que yo buscaba era esto..
No dijo desde un principio que deba pensarse en un enfoque en cadenas, pero la forma en como ya estaba encarando el problema anunciaba en como analizarlo (y les sonará muy molesto pero se los digo: no supieron leerlo). Disculpen si es que suena pesado pero es que es lo que suena lógico y de esperarse: si ten dan manzanas, piensa en manzanas... no en naranjas.

Un profesor, en los que se están iniciando prima la estrujada de neuronas antes cualquier tipo de innovación. Las innovaciones vienen para más adelante, para cuando las neuronas se han preparado y asimilado los conceptos.... así las ideas pueden brillar y salir mucho mejor canalizadas que sin una preparación previa.

¿Cómo se puede innovar si el estudiante apenas entiende de algunas cosas?
Parece que están olvidando de lo que es ser un estudiante.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #17  
Antiguo 01-04-2011
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
jajajajjaa jajajajjaja

casi tienen que pasar este hilo a debates y "luisito", ni se enteró ....

interesante y sana discusión. (espero que sin rencores)
Responder Con Cita
  #18  
Antiguo 01-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius Ver Mensaje
Pues claro que me da gusto, porque al final resulta ser que mi intuición era asertada: te dan manzanas, piensa en manzanas... por más que quieran llevarme la contraria
No es que te quiera llevar la contraria. Para mi el ejercicio sigue siendo de manipulación de caracteres. Si el profesor busca una solución numèrica, entonces es un ejercicio que poco sirve para aprender a programar.

Y no es que no sepamos leer, es que no puede uno ser tan cuadrado como para pensar que por el sólo hecho de haber números involucrados entonces se trata de un problema aritmético.

// Saludos
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 cualquiera.. luisito2011 Varios 3 30-03-2011 21:15:47
Calcular un digito de chequeo GrupoDatasoft Varios 7 09-02-2009 17:53:53
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
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 18:01:08.


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