Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Determinar digito mayor de un numero (https://www.clubdelphi.com/foros/showthread.php?t=73473)

luisito2011 25-04-2011 21:24:14

Determinar digito mayor de un numero
 
ola.. soy yo de nuevo aca con un problemita que no puedo resolver

//Pida un numero por teclado y determine cual es el valor del digito mayo de dicho numero //
ejemplo .. de 123457
DigM:=7;
si me lo puden agregar.. a esa unidad y en console..
Código Delphi [-]
 
Unit
interface
type
cnumeronatural=class
valor:integer;
  constructor crear;
  procedure asignarvalor(nuevovalor:integer);
  function obtenervalor:integer;
  Function NumeroDigitos : integer;

end;
implementation
constructor cnumeronatural.crear;
begin
  valor:=0;
end;
procedure cnumeronatural.asignarvalor(Nuevovalor:integer);
begin
  valor:=nuevovalor;
end;

function cnumeronatural.obtenervalor:integer;
begin
result:=valor;
end;

 
 Function  CNumeroNatural.NumeroDigitos : integer;
Var
   N,c :integer ;
Begin
     N := Valor;
     C := 0;
     while valor >0 do
       begin
        valor := valor Div 10;
        c:=c+1;
       end;
    result:=c;
 End;
  
end.
gracias

roman 25-04-2011 21:27:50

Hubiera pensado que el dígito mayor es el de la extrema izquierda, pero en fin, si lo que deseas es el dígito de la extrema derecha entonces:

Código:

DM := Número mod 10;
// Saludos

oscarac 25-04-2011 21:35:23

Juat ?????

entiendo que si tienes un numero (compuesto por varios numeros) quieres saber el de mayor valor?

Ejemplo

Numero := '5231476'

Resultado = 7

eso?
o es otra cosa lo que deseas

roman 25-04-2011 21:44:20

¡Ah! Tienes razón. El ejemplo es confuso y puede ser que se refiera más bien a lo que dices tú.

// Saludos

oscarac 25-04-2011 21:55:55

En todo caso lo que puedes hacer es lo siguiente

descomponer el numero en digitos

valor = Valor del Primer digito
for 2 hasta la cantidad de digitos
Digito = Copy (cadena,x,1)
Si digito > Valor
Valor := Digito
endfor

al final el mayor digito se quedara en valor

Caro 25-04-2011 22:11:03

Hola luisito2011, también lo puedes hacer así:

Código Delphi [-]
function cnumeronatural.DigitoMayor(numero : Integer) : Integer;
var
  Mayor, Digito, Num : Integer;
begin
  Mayor := -1;
  Num := numero;
  while Num > 0 do
   begin
    Digito := Num Mod 10;
    Num := Num Div 10;
    if Digito>Mayor then
     Mayor:=Digito;
   end;
  result:=Mayor;
end;

Saluditos

ecfisa 25-04-2011 22:17:54

Hola.

Código Delphi [-]
function MayorDigito(Numero: Integer): Integer;
var
 Digito: Integer;
begin
  Result:= -1;
  while Numero > 0 do
  begin
    Digito:= Numero mod 10;
    Numero:= Numero div 10;
    if Digito > Result then
      Result:= Digito;
  end;
end;

Un saludo.

Edito: Veo que mientras hacía los últimos retoques del código, Caro ya había puesto una solución muy similar... :)


La franja horaria es GMT +2. Ahora son las 14:52:18.

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