Pascal/Turbo Pascal - Repeat

 
Vista:

Repeat

Publicado por Dam (3 intervenciones) el 03/01/2001 00:00:00
En ocasiones repeat o until se ejecuta dos ves cuando se deberia ejecutar una sola vez
Como evitarlo? Gracias por adelantado
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:Repeat

Publicado por Cris (29 intervenciones) el 04/01/2001 00:00:00
Hola, no pusiste el codigo para darme una idea de que es lo que quieres hacer.
Puede ser que tu condicion este mal planteada.
Otra cosa,
¿Para que usas un repeat si solo lo hara una sola vez?
Puedes darme un ejemplo de lo que estas haciendo?

Saludos.
Cristina
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:Repeat

Publicado por Dam (3 intervenciones) el 05/01/2001 00:00:00
estoy calculando coordenadas polares, necesito q el usuario responda a la pregunta:
Va a introducir las coordenadas en forma polar o rectangular (S/N), si la respuesta es S o N el programa se ejecutara normalmente, pero
si por el contrario el usuario se equivoca e introduce por ejemplo una "d", quiero que
se le vuelva a pedir las respuesta. Esa es la causa de la aparicion del Repeat, pero
parece ser que hay algo incorrecto puesto que una vez que entra en funcionamiento
el Repeat, lo ejecuta dos veces siempre. ¿Por que puede ser?
Gracias
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:Repeat

Publicado por Cris (29 intervenciones) el 08/01/2001 00:00:00
ok, mira, a veces los ciclos repeat se ejecutan por el comando read o readkey.
en el read, lee un caracter y un enter no?, pero a veces el enter (u otro caracter si lo puso, por ejemplo, pudo haber puesto: "si<enter>", entonces el enter o el caracter i se "guarda" para la siguiente entrada de read o de readkey), y lo mismo pasa con readkey.
puede ser esto, o que hayas puesto mal la condicion, si es esto ultimo, aqui te mando el codigo, con read y con readkey.
si es lo primero, la verdad no me se un comando (como el flush de c), que te pueda limpiar el buffer. pero puedes investigarlo en la ayuda de turbo pascal.

var x:char; {para obtener respuesta de usuario}

begin
repeat
write(´va a introducir coordenadas s/n´);
read(x); {introducir respuesta}
until x in[´s´,´n´,´S´,´N´];

o

var x:char; {para obtener respuesta de usuario}

begin
repeat
write(´va a introducir coordenadas s/n´);
x:=readkey; {introducir respuesta}
until x in[´s´,´n´,´S´,´N´];
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:Repeat

Publicado por MaGoG (3 intervenciones) el 08/01/2001 00:00:00
Ya que viene a cuento, aquí os pongo una linea para que dejeis bien limpito el buffer del teclado: (ah es una variable char)

while keypressed do ah:=readkey;

y si depaso también quereis dejar limpia la variable pues ah:=´´;
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:Repeat

Publicado por carloza (1 intervención) el 02/06/2009 04:56:57
hola gente he visto como asen para terminar la secuencia de caracteres en el buffer, mi pregunta es la siguiente
yo ingreso una serie de caracteres que por desgracia la tngo que terminar en enter, como ago para leer el enter,
por lo que yo se el enter esta compuesto por dos caracateres el 13 y el 15 en acsi
(vertical tab y carriage retunr, respectivamente)
ahora vien
yo ise un procedimiento que se llama a si mismo
y tiene un condicional para que deje de llamarse

mi pregunta es
yo pongo por ej:

read(Letra) {letra es una variable de tipo char}

y en el condicional pongo:

if letra <> char(13) or Letra <> char 15
then deja de repetir no se que aga otra cosa

mi pregunta es que exprecion tengo que poner en el IF para que me lea el enter
porque por ahora lo que escrivi me lo compila pero el prcedimiento no deja de llamarse devido a que no lee el enter

aca abajo les dejo el programa que yo ise
es para dar welta las palabras por ejemplo se escrivo ANIMAL<enter>
en la pantalla deve imprimir lamina

program invertir_palabra;
var L:char;
procedure invertir (L:char);
var aux:char;
begin
read(aux);
if (aux <> char(13)) or (aux <> char(15)) { <--- aca esta el drama, no della }
then invertir(aux); { de llamar al procedimiento "Invertir" }
write(L);
end;
begin
writeln('ingrese una palabra');
read(L);
invertir(L);
readln; readln;
end.

espero las respuestas,

contesto una pregunta que quedo colgada por alla atras en lo que dijo otro flaco antes: para que no se te sierre el programa cuando se terminan las sentencias tenes que poner readln abajo de todo en tu programa antes de el ultimo end para que se quede esperando un enter y no se sierre, si aun asi se sigue serrando pone varias veses readln vas a ver que funciona

eso fue todo
quedo a las espera de una respuesta, o varias respuestas
ya no se donde mas buscar
esima la ayuda del pascal esta en ingles
ni ganas de ponerme a traducir que carajo dice


nos vemos
un abrazo
suerte a todos

chau

Atte:
Carloza

pd: me pueden enviar la reesouesta a mi mail [email protected] o aserme preguntas como quieran

s r . s m a n (a) h o t ...
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