PDA

Ver la Versión Completa : Detectar tipo de dato introducido por teclado


isarmiento
28-09-2012, 13:14:30
Hola a todos y gracias de nuevo por ayudarme :)

Soy nueva en Delphi y nos han dejado un trabajo de convertir entre tipos Numero, Palabra y Romano...

Es en consola,

Mi programa debe responder a 3 casos... ejemplo:

1.si la persona digita--> 1 ... mi programa debe responder--> I y uno
2.si la persona digita--> I ... mi programa debe responder--> 1 y uno
3.si la persona digita--> uno ... mi programa debe responder--> 1 y I

me ha ido bien con crear las funciones para convertir los datos...

el problema que tengo es que necesito hacer que mi programa sepa que tipo de valor se ha introducido por teclado,
si es un numero, si es palabra o numero romano... para llamar a las funciones específicas...

Les agradecería mucho cualquier ayuda....

Buenas vibras a todos :)

cloayza
28-09-2012, 15:45:31
A ver si esto te ayuda...


program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;


var
value:String;
entero:Integer;

function IsRoman(Value:String):Boolean;
var
I: Integer;
begin
Result:=True;
for I := 1 to Length(Value) do
begin
if Not CharInSet(UpCase(Value[I]),['I','V','X','L','C','D','M']) then
begin
Result:=False;
Exit;
end;
end;
end;

function IsNumber(Value:string):Boolean;
var
NumVal:Integer;
begin
Result:=TryStrToInt(Value, NumVal);
end;

begin
try
write('Ingrese valor :');
Readln(value);
if IsNumber(Value) then
writeln('Ingreso un número :'+Value)
else if IsRoman(Value) then
writeln('Ingreso número romano:'+Value)
else
writeln('Ingreso una palabra :'+Value);

readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.


Saludos cordiales

ecfisa
28-09-2012, 16:49:15
Hola.


La consigna del ejercicio resulta confusa o debe faltar algún dato en ella. Por que así expuesta, no sería posible distinguir a las palabras "MIL" o "VIL" de los números romanos por ejemplo.


Saludos.

roman
28-09-2012, 17:22:42
La consigna del ejercicio resulta confusa o debe faltar algún dato en ella. Por que así expuesta, no sería posible distinguir a las palabras "MIL" o "VIL" de los números romanos por ejemplo.


Y, ¿qué números serían MIL y VIL?

// Saludos

isarmiento
28-09-2012, 17:53:31
A ver si esto te ayuda...


program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils;


var
value:String;
entero:Integer;

function IsRoman(Value:String):Boolean;
var
I: Integer;
begin
Result:=True;
for I := 1 to Length(Value) do
begin
if Not CharInSet(UpCase(Value[I]),['I','V','X','L','C','D','M']) then
begin
Result:=False;
Exit;
end;
end;
end;

function IsNumber(Value:string):Boolean;
var
NumVal:Integer;
begin
Result:=TryStrToInt(Value, NumVal);
end;

begin
try
write('Ingrese valor :');
Readln(value);
if IsNumber(Value) then
writeln('Ingreso un número :'+Value)
else if IsRoman(Value) then
writeln('Ingreso número romano:'+Value)
else
writeln('Ingreso una palabra :'+Value);

readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.


Saludos cordiales


Muchas gracias por responder.... uso delphi 2007 y me manda un error en el System.SysUtils ... dice "[Fatal Error] Project2.dpr(8): File not found: 'System.SysUtils.dcu'"

sabes que puede ser?? gracias <3

ecfisa
28-09-2012, 18:16:02
Y, ¿qué números serían MIL y VIL?

// Saludos
Veo que ya he olvidado como se escribía 49 en números romanos... :o:D (Conversor de numeros romanos (http://www.portalisimo.com/conversor_de_numeros_romanos/))

Saludos.

roman
28-09-2012, 18:22:06
Creo que está mejor este conversor (http://www.misosguar.com.ar/romanos/), que detecta números inválidos.

// Saludos

isarmiento
29-09-2012, 09:04:04
Muchas gracias por responder.... uso delphi 2007 y me manda un error en el System.SysUtils ... dice "[Fatal Error] Project2.dpr(8): File not found: 'System.SysUtils.dcu'"

sabes que puede ser?? gracias <3

Gracias por la ayuda <3

Ya lo he resuelto :)