Pascal/Turbo Pascal - Problema con integers y chars

 
Vista:

Problema con integers y chars

Publicado por palvji (5 intervenciones) el 25/07/2007 18:21:02
Buenos dias.
Veamos, mi problema es el siguiente:

Necesito preguntarle al usuario el número de jugadores de un juego de cartas. El mínimo número de jugadores es 3 y el máximo es 10.

El problema radica en que si intento guardar el número en una variable integer (mirando primero que sea mayor que 3 y menor que 10) y el usuario, tan simpático él, introduce cualquier otro caracter, mi programa casca, como es evidente.

He intentado hacerlo guardando el número en una variable CHAR para solucionar esto mismo, pero al no existir un caracter '10', me toma el '10' como 1 y no me sirve.

También se me ocurrió hacerlo con un STRING, pero aparte de que no se me ocurre cómo, más adelante necesitaré convertir esa cadena a un integer, lo cual no se si se puede hacer (sé hacerlo con un char).

Si a alguien se le ocurre esa idea feliz y me puede ayudar lo agradecere.

Muchas gracias-
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con integers y chars

Publicado por Tamara (2 intervenciones) el 25/07/2007 19:55:03
Puedes usar un tipo subrango y devolver un mensaje de error en caso de que el numero de jugadores sea menor q 3 o mayor que 10
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con integers y chars

Publicado por palvji (5 intervenciones) el 25/07/2007 20:12:40
No me sirve, puesto que aunque lo haga asi, si el usuario introduce cualquier caracter que no este en el subrango, el programa casca de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con integers y chars

Publicado por Diego Romero (996 intervenciones) el 25/07/2007 22:45:26
Usa el procedimiento Val();
Declaración:
procedure Val(S; var V; var Code: Integer);
donde:
S variable de tipo string; debe ser una secuencia de caracteres que
forman un número entero con signo
V variable entera o real
Code variable de tipo Integer.

La variable Code almacenará la posición del caracter que no puede ser convertida a número o cero en caso de que el valor pudo ser convertido exitósamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con integers y chars

Publicado por micropais (209 intervenciones) el 26/07/2007 11:31:16
hola palvji.

Pide al usuario que introducca un numero del 3 al 10
recoge en numero como cadena -asi admite cualquier cosa -
comvierte la cadena a numero.

Si el numero no está entre el 3 y el 10 el programa invita al usuario a reintroducir el numero. tranquilo que la CPU no se cansa por muy cabezon que sea el usuario.

ejemplo:
____________________________________________________
uses crt;
var numeroS:string;
numero:integer;
error:integer;
begin
clrscr;
repeat
writeln('introducca un numero' );
readln(numeroS);
val(numeroS,numero,error);

if (error<>0) then writeln(' un Numero no una LETRA ') else
if (numero<3) or (numero >10) then writeln('debe estar entre 3 y 10 ');

until (numero>2) and (numero<11);
writeln('numero:',numero, ' OK.');
readln;

end.
_______________________________________________________

SALUDOS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con integers y chars

Publicado por palvji (12 intervenciones) el 26/07/2007 13:38:55
Gracias, ya lo consegui con la idea de Diego de usar la funcion Val.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar