Pascal/Turbo Pascal - Ayuda

 
Vista:

Ayuda

Publicado por Agustin (26 intervenciones) el 06/05/2006 22:25:00
Muchas gracias por la ayuda, pero me envia un error al poner "tecla=a then".
Y quisiera q me ayudaras tambien en el tema del tiempo, q especifique en el mensaje anterior, pero todo incorporado en un mismo programa.
Desde ya muchisimas gracias y disculpen las molestias.
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

Publicado por Diego Romero (996 intervenciones) el 07/05/2006 18:20:02
Agustin.
En primera te pediré que continues con la línea que abriste para poder seguir este intercambio. Me pasé un par de minutos tratando de entender de dónde sale tu mensaje.
Evidentemente mi código fue un ejemplo, solo eso, un ejemplo, más pseudocódigo que otra cosa, el error que te marca se debe a que tecla debería ser de tipo char y la comparación correcta sería tecla='a'.
Para calcular el tiempo supongo que deberías usar el procedimiento GetTime(), almacenar su resultado en una variable, luego vovler a tomar el tiempo con el mismo procedimiento y restar un tiempo al otro.
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

Publicado por Agustin (26 intervenciones) el 07/05/2006 19:21:39
Muchas gracias.

el tema es q no se como usar bien el get time y con un amigo hicimos un cronometro pero no sabiamos como hacer para q en el caso de teclear la letra "Z" se pare y te muestre el resultado.
Era mas o menos asi:

program cronometro;
uses crt;
var
m,s,c:longint;
a:char;
begin
clrscr;
for m:=0 to m:=59 do
for s:=0 to s:=59 do
for c:=0 to c:=59 do
begin
gotoxy(39,12);write(m,':',s,':',c);
delay(10);
end;
readkey;
end.

Te repito la consigna: Introducir letra por letra el abecedario y al concluir mostrar, al presionar la letra "Z" el tiempo q se tardo en hacerlo si el tiempo empezo a correra desde q fue presionada la letra "A".
El cronometro mas o menos ya lo tengo armado, lo q no se es como incorporarlo con lo otro, q seria la estructura del abecedario, hacer q se pause y lo mantenga impreso y hasta q presiones la barra espaciadora vuelva a correr el programa.

Muchisimas gracias y disculpa las molestias.

Atte: AGUSTIN
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

Publicado por Agustin (26 intervenciones) el 07/05/2006 19:37:07
P.D.:Perdoname si incho mucho pero pasa q estoy en 4º año y el año pasado tuve a una vieja loca q no explico nada, y ahora me estan empezandoa a caer muchas fichas y necesito ayuda..... :' (.

nos vemos.
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

Publicado por Diego Romero (996 intervenciones) el 08/05/2006 14:33:26
Si no entendí mal la condición de dispara el contador de tiempo es cuando el usuario presiona la tecla 'A' y se detiene cuando presiona la tecla 'Z'. Si es esto estamos bien, se puede hacer sin demasiadas complicaciones. Ahora eso de tener el reloj siempre visible es ooootro tema totalmente diferente porque implica paralelismo de ejecución y eso en un sistema operativo como DOS no se puede hacer porque es monotarea, no puedes atender dos cosas al mismo tiempo.
Por supuesto, hay una forma de hacerlo usando las interrupciones del sistema operativo pero creo que eso escapa al alcance del ejercicio (a menos que tengas un profesor muy pirado).

Salvando ese detalle, el código que se me ocurre es el siguiente:
var
SiguienteTecla: byte;
Tecla: char;
begin
WriteLn('Ingrese el abecedario en el orden correcto.');
SiguienteTecla:=65;
repeat
repeat until KeyPressed;
Tecla:=UpCase(ReadKey);
WriteLn(Tecla);
if Ord(Tecla)=SiguienteTecla then
begin
WriteLn('Correcto.');
Inc(SiguienteTecla);
end
else
begin
WriteLn('Incorrecto.');
end;
until tecla = 'Z';
end.
Dime si voy bien hasta aquí y luego vemos lo del cronómetro.

PD: no deberías pedir disculpas por necesitar ayuda, todos necesitamos ayuda de vez en cuando.
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

Publicado por Agustin (26 intervenciones) el 08/05/2006 19:31:09
gracias, gracias, muchas gracias!!!
Si en un caso tendria q obviar la perte q dice correcto, incorrecto y presione la siguiente tecla seria igual pero borrando esa parte??, porq se supone q cuando apretas la letra correcta directamente te pasa a la siguiente para q la teclees y si la tecleas mal sigue con la misma tecla en la pantalla hasta q le teclees bien.

Y siiii, entendiste muy pero muy bien, mi profesor tambien me habia dicho eso de interrupciones pero nunca, por lo menos hasta ahora, me lo esplico :S

Dale pasemos al cronometro. Lo q mi amigo y yo hicimos esta bien?
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

Publicado por Diego Romero (996 intervenciones) el 09/05/2006 01:24:15
Bueno, modifica lo que creas necesario je.
Bien pasemos a lo del cronómetro. Aclárame un par de cosas.
¿El cronómetro debe arrancar aunque el usuario no haya presionado ninguna tecla otdavía?, ¿o solo después de haber presionado la 'A'?, lo pregunto porque en el segundo caso el usuario estaría aporreando el teclado tratando de adivinar qué letra es la primera cuando se supone que la prueba ya comenzó :P.
La siguiente cuestión es, ¿el cronómetro sí o sí debe estar siempre visible en tiempo real?, es decir, ¿el usuario debe ver que los segundos están corriendo?.
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

Publicado por Agustin (26 intervenciones) el 09/05/2006 03:15:20
Te digo: el cronometro debe empezar ni bien el usuario presiono la tecla "A", no debe verse hasta q presione "Z" y lo muestre pausado y lo q yo queria hacer es q en el programa primero te muestre la letra "A", entonces el usuario sabe q la debe presionar, ni bien la presiona ya en la misma pantalla, en el lugar de la letra "A" (osea, reemplazandola), tiene q aparecer la letra "B" a la q el usuario la ira a presionar y asi sucesivamente....
Vuelvo a repetir: hasta q al usuario le aparezca la letra "Z" el tiempo no se debeb ver y cuando presione la misma se debe mostrar los segundos y centecimas.

P.D.: Mepa q sos un groso y puedo contar con vos !
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

Publicado por Diego Romero (996 intervenciones) el 09/05/2006 16:35:13
Bien gracias por aclararme este punto, de modo que no es tan complicado como pensaba ... lástima :P.

Esta es mi versión:
uses crt, dos;

var
SiguienteTecla: byte;
Tecla: char;
TimerOn: boolean;
H, M, S, C: word;
Inicio, Final: real;

procedure StartTimer;
begin
TimerOn:=true;
GetTime(H, M, S, C);
Inicio:=C/100+S+M*60+H*60*60;
end;

procedure StopTimer;
begin
TimerOn:=false;
GetTime(H, M, S, C);
Final:=c/100+s+m*60+h*60*60;
end;

begin
WriteLn('Ingrese el abecedario en el orden correcto.');
SiguienteTecla:=65;
TimerOn:=false;
repeat
repeat until KeyPressed;
Tecla:=UpCase(ReadKey);
WriteLn(Tecla);
if Ord(Tecla)=SiguienteTecla then
begin
WriteLn('Correcto.');
Inc(SiguienteTecla);
if TimerOn = false then StartTimer;
end
else
begin
WriteLn('Incorrecto.');
end;
until tecla = 'Z';
StopTimer;
WriteLn('Tiempo: ', Final-Inicio:5:3,' Segundos.');

readkey;
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

Publicado por Agustin (26 intervenciones) el 09/05/2006 17:17:26
Estoy muy pero muy agradecido!!!! De verdad te lo digo, sos un grosooo..
Pero hay un probelma :( , cuando pongo al final "StopTimer;" me dice q no esta identificado :S.
Hay otra cosita mas..........(perdon si jodo tanto)cuando empieza el programa la primer letra (osea la "A") ya tiene q estar escrita, entonces el usuario la presionara. Cuando este lo haga la aparecera la siguiente (osea la "B"), y cuando la presione le saldra la "C" y asi sucesivamente. Otra vez disculpame si te jodo tanto con este tema :S
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

Publicado por Diego Romero (996 intervenciones) el 09/05/2006 17:26:10
Habrás copiado algo mal pues a mi el programa tal como lo pegué en mi mensaje anterior funciona perfectamente.

Sobre imprimir la letra que el usuario debe presionar pues basta con que hagas un WriteLn(Chr(SiguienteTecla)); antes de repeat until keypressed;
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

Publicado por Agustin (26 intervenciones) el 09/05/2006 23:19:31
Sos lo mas groso q vi en mi vidaaaa, muchas pero muchas gracias!!!

cualquier cosa q tenga alguna duda voy a volver a preguntar ^^ jejejjeee.
Y por favor si llegas a tener algun ejercicio de practica para mi decime asi apuro un poco XD.

Otra vez muchas 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:Ayuda

Publicado por Agustin (26 intervenciones) el 09/05/2006 23:22:37
Otra preguntita.... como tendria q hacer para agrandar el tamaño de una letra o palabra?
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

Publicado por Diego Romero (996 intervenciones) el 10/05/2006 05:18:27
Si estás trabajando en modo texto, no se puede.
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

Publicado por Agustin (26 intervenciones) el 10/05/2006 16:58:07
Ta bien...no importa de todas formas, muchas gracias por ayudarme. Cualquier otra duda voy a pasar 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:Ayuda

Publicado por Agustin (26 intervenciones) el 10/05/2006 17:37:47
Hay una preguntita XD, el programa esta re bien armado, pero cuando presionas "A" esta bien, pero si presionas "Z" en donde tenes q poner "B" o cualquier otra letra da el juego por finalizado y te muestra el resultado :S.

Como puedo arreglarlo?
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

Publicado por Agustin (26 intervenciones) el 10/05/2006 21:07:09
Jajajajajajajajaaaa...
Bueno...
muchas gracias por todo, sos grosoo!!!
Nos vemos!!
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

Publicado por Agustin (26 intervenciones) el 11/05/2006 19:10:52
Por favor diego ayudame!!!! no encuentro forma de resolverlooooo :' ( !!!....
pleaseee!!!!....
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

Publicado por Diego Romero (996 intervenciones) el 12/05/2006 22:22:06
Será mejor que continuemos esta charla por correo, esto se ha alargado demasiado y de ha vuelto muy específico.
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