Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2009, 20:22   #1
bunner
 
Регистрация: 05.02.2009
Сообщений: 3
По умолчанию ограничение по времени

Как в паскале при составлении теста установить ограничение по времени, что бы тест выполнялся допусти не больше 5 минут
bunner вне форума Ответить с цитированием
Старый 05.02.2009, 20:31   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

имхо нормального таймера не получится..
Можно использовать gettime в связке с keypressed (чтобы узнать, не ответил ли проверяемый)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 05.02.2009 в 20:40.
Sazary вне форума Ответить с цитированием
Старый 05.02.2009, 20:48   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот примерчик набросал.. Чисто для демонстрации.
Нужно нажать 'y' в течение 5 секунд (программа выведет "Good"), иначе скажет, что время вышло.
Код:
uses crt,dos;
var ch : char;
k : integer;
h,m,ms,sc,sc2 : word;

begin
clrscr;
k:=0;
writeln('Nazhmite "y" v techenie 5 sekund');
gettime(h,m,sc,ms);
while k<10 do
  begin
  if keypressed then
    begin
    ch := readkey;
    if ch = 'y' then break;
    end;
  gettime(h,m,sc2,ms);
  if sc2-sc<0 then sc2 := 60+sc2-sc
  else sc2 :=  sc2-sc;
  if sc2>=5 then break;
  end;
if ch <> 'y' then writeln('Vremya vyshlo!')
else writeln('Good!');
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.02.2009, 21:09   #4
bunner
 
Регистрация: 05.02.2009
Сообщений: 3
По умолчанию

а как это связать с тестом...
Код:
var RightCount:byte;
answer:byte;

begin
RightCount := 0;
writeln(' Enter');
writeln('klklk?');
writeln('1 - klk');
writeln('2 - klklk');
writeln('3 - klklk');
writeln('4 - klklk');
readln(answer);
if (answer = 1) then inc(RightCount);

writeln('klkl');
writeln('1 - klkl');
writeln('2 - klkl');
writeln('3 - klklk');
writeln('4 - klkl');
readln(answer);
if (answer = 2) then inc(RightCount);


writeln('klklkl: ', RightCount);
readln;

end.
bunner вне форума Ответить с цитированием
Старый 05.02.2009, 21:31   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Примерно так.
n - время на прохождение. Должно быть от 1 до 59 (секунд). Если нужно больше, то там уже нужно сравнивать минуты..

Код:
uses crt,dos;
const n = 20; { не больше 59 }
var RightCount:byte;
answer:char;
h,m,ms,sc,sc2 : word;
fl : boolean;

begin
clrscr;
gettime(h,m,sc,ms);
RightCount := 0;
writeln(' Enter');
fl := true;
while true do
 begin
 writeln('klklk?');
 writeln('1 - klk');
 writeln('2 - klklk');
 writeln('3 - klklk');
 writeln('4 - klklk');
 while true do
 begin
  if keypressed then
    begin
    answer := readkey;
    if answer in ['1'..'4'] then break;
    end;
  gettime(h,m,sc2,ms);
  if sc2-sc<0 then sc2 := 60+sc2-sc
  else sc2 :=  sc2-sc;
  if sc2>=5 then
    begin
    fl := false;
    break;
    end;
  end;
 if not fl then break;
 if (answer = '1') then inc(RightCount);

 writeln('klkl');
 writeln('1 - klkl');
 writeln('2 - klkl');
 writeln('3 - klklk');
 writeln('4 - klkl');
 while true do
 begin
  if keypressed then
    begin
    answer := readkey;
    if answer in ['1'..'4'] then break;
    end;
  gettime(h,m,sc2,ms);
  if sc2-sc<0 then sc2 := 60+sc2-sc
  else sc2 :=  sc2-sc;
  if sc2>=5 then
    begin
    fl := false;
    break;
    end;
  end;
 if not fl then break;
 if (answer = '2') then inc(RightCount);

 break;
 end;
if not fl then writeln('Vremya vyshlo!')
else writeln('klklkl: ', RightCount);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничение ввода в Edit xxxsas Общие вопросы C/C++ 4 22.01.2009 12:36
Ограничение на ввод символов ANTI1 Общие вопросы Delphi 4 17.12.2008 16:30
Ограничение запусков программы?? John_chek Общие вопросы Delphi 14 24.11.2008 14:26
Ограничение вертикальной прокрутки valerij Microsoft Office Excel 11 18.06.2008 18:00
Ограничение ввода в Edit Макс84 Компоненты Delphi 7 23.07.2007 09:38