Pascal/Turbo Pascal - AYUDA POR FAVOR

   
Vista:

AYUDA POR FAVOR

Publicado por Bernardo (4 intervenciones) el 09/07/2009 15:40:37
Hola a todos....

Miren yo estoy estudiando ingenieria en sistemas, y tengo un examen la proxima semana. Quisiera que me ayudaran con esto.

El programa consiste en hacer un vector en turbo pascal 7.0.

Ahora bien, el vector está hecho y listo, pero hay un problema, la profesora quiere que cuando el programa me haga X pregunta para yo intruduzcir un numero, si en caso erróneo introduzco una letra, el programa me diga: "SE REQUIERE NUMEROS ENTEROS NO LETRAS", y me vuelva a hacer la pregunta.

Osea:

PASCAL: ESCRIBA POR FAVOR SU NUMERO X

USUARIO: (INTRUDUCE) A

PASCAL: SE REQUIERE NUMERO ENTEROS NO LETRAS

PASCAL: ESCRIBA POR FAVOR SU NUMERO X

Por lo general, si uno escribe letra el programa presenta un error y se sale.... si alguien me puede ayudar estaría sumamente agradecido.
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:AYUDA POR FAVOR

Publicado por Miguel (4 intervenciones) el 09/07/2009 20:57:47
Bueno Bernardo en este caso puedes hacer uso de las directivas de Pascal, como tu dices cuando hay un error de este tipo el programa deja de ejecutarse.
Pero hay una forma de que al haber un error no deje de ejecutarse el programa.
Con la directiva $I puedes resolver este problema (es esta la que encarga de los errores).

WRITE('Ingrese un entero: ');
{$I-} {Desactivacion de la directiva}
READLN(variable);
WHILE IOResult<>0 DO
BEGIN
WRITE('Debe ser un entero, reingreselo: ');
READLN(variable);
END;
{$I+} {Activacion de la directiva}

Fijate con esto, deberia andar. IOResult es una variabla de tipo Integer, que no debes declarar (ya esta declarada junto a la directiva), si no hay error toma el valor 0, en caso contrario dependiendo de que tipo de error haya ocurrido tomara otro valor.

De esta forma validaras siempre el valor de la variable.

PD: Nunca olvides de reactivar la directiva.
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:AYUDA POR FAVOR

Publicado por juan_inf (44 intervenciones) el 13/07/2009 03:13:40
me parece que pascal te deja usar exepciones , yo me tiraria mas a usar el try. 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:AYUDA POR FAVOR

Publicado por Bernardo (4 intervenciones) el 13/07/2009 03:22:38
Hola, gracias por su ayuda... MIGUEL no me sirvio lo q me mandaste.... que mal... pero gracias de todas formas...

Juan_inf, me puedes ilustrar mas sobre el try... explicame mejor
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:AYUDA POR FAVOR

Publicado por Miguel (162 intervenciones) el 13/07/2009 05:19:17
Especifica mejor lo que necesitas, no somos adivinos.
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:AYUDA POR FAVOR

Publicado por Diego Romero (997 intervenciones) el 13/07/2009 05:39:43
No es Pascal estandar, ni en el dialecto de Turbo Pascal.

La solución de Miguel es la más cómoda.
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:AYUDA POR FAVOR

Publicado por Bernardo (4 intervenciones) el 13/07/2009 18:23:26
Miguel, no te molestes, intente hacer lo que tu me dijiste pero no lo pude lograr.

vuelvo a repetir la pregunta:

Como hago para que pascal me bloquee la entrada de LETRAS, y solo se limite a la entrada de números, y estos que sean positivos.

Ejemplo:

PASCAL: Ingrese el tamaño del vector

USUARIO: (El usuario ingresa "A")

PASCAL: No se admiten letras ni números negativos

PASCAL: Ingrese el tamaño del vector

USUARIO: (El usuario ingresa "-1")

PASCAL: No se admiten letras ni números negativos

PASCAL: Ingrese el tamaño del vector

Y ASI CONSECUTIVAMENTE.

Se sabe que por lo normal si se introduce una letra en donde se debe introducir número, el programa te presenta un error y se sale. Quiero evitar eso, quiero q en vez de que se salga, te vuelva a hacer la pregunta.

de verdad gracias a todos, espero que me puedan ayudar en esto...
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:AYUDA POR FAVOR

Publicado por Miguel (162 intervenciones) el 13/07/2009 21:35:52
Bueno lo que te pase antes funiona perfectamente con esto, obviamente que lo que te pase es una ejemplo implementado.

Otra explicacion, cuando tu pones {$I-} "desactivas la directiva", ¿que quiere decir?, que cuando haya un error el programa no deje de ejecutarse, luego en una variable ya declarada llamada IOResult (de tipo entero) te fijas si hubo error o no, ¿como hacerlo?, bueno si IOResult contiene el valor 0 quiere decir queno hubo ningun error, por lo tanto el valor que se ingreso al programa va a ser del tipo correspondiente, pero si no es 0 es por que hubo un error. De esta forma puedes saber si hubo un error o no.
Como siempre luego reactiva la directiva con {$I+} .
Esto te sirve, no te cierres con que no anda, si te dicen que sirve para algo y tu no lo entendiste no tienes que tirarlo por la ventana, estudialo bien, busca sobre esto en google, o en el mismo ayuda de Turbo Pascal, ahi vienen todas las directivas.
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:AYUDA POR FAVOR

Publicado por Bernardo (4 intervenciones) el 14/07/2009 00:00:12
Gracias miguel, tomaré tu consejo...

gracias por tu ayuda... cualquier otra cosa la pubklicaré aqui...
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:AYUDA POR FAVOR

Publicado por Guido (2 intervenciones) el 29/08/2009 22:27:11
Mira che te muestro un ejemplo :

Program prueba ;
uses crt ;
var Text1: real;
begin
CLRSCR;

Writeln('Ingrese 1 numero ') ;
{$I-}
Readln(text1);
{$I+}
IF IOresult = 0 THEN
begin

Writeln('El numero es: ',text1 ) ;
READKEY;
end
ELSE
begin
Writeln('Deve ingresar un numero real' ) ;
READKEY;
end;
end.
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:AYUDA POR FAVOR

Publicado por Guido (2 intervenciones) el 29/08/2009 22:25:49
Muchas gracias me re sirvio esto
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