PDA

Ver la Versión Completa : Determinar digito mayor de un numero


luisito2011
25-04-2011, 21:24:14
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..

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:


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í:


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.


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... :)