Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Pascal ABC (http://forum.oszone.net/showthread.php?t=260996)

Sprint116 21-05-2013 22:36 2153766

Pascal ABC
 
Здравствуйте, у меня возникла небольшая проблема. Написал код игры "Чет или нечет?", но при повторном запуске игра выдает то же самое число что и в первый раз. Если закрыть ее и снова запустить она генерирует другое число.
Код:

Program Chet;
Uses crt;
Var
flag : char;
x, b, y, i: integer;
Begin
clrscr;
randomize;
x:=random(99);
If  x mod 2=0  then  b:= 2  else b:= 1;
repeat
writeln('Введите 2, если число четное или 1, если число нечетное');
readln (y);
begin;
if y>2 then
writeln('Введите 2 или 1!');
end;
writeln('Число компьютера',x);
If y=b then
writeln('Вы угадали')
else writeln('Вы не угадали');
Writeln('Еще раз (Y/N) ?');
readln(flag);
Writeln('_______________________________________________________');
until upcase(flag)<>'Y';
end.


Iska 21-05-2013 23:20 2153782

Цитата:

Цитата Sprint116
но при повторном запуске игра выдает то же самое число что и в первый раз »

Sprint116, было бы странно, если бы было иначе. Вас не смущает, что генерация случайного числа находится перед циклом «repeat … until» (а не внутри него)?!

lxa85 21-05-2013 23:31 2153792

Sprint116,
Цитата:

Цитата Sprint116
Код:

x:=random(99);
repeat
...
until upcase(flag)<>'Y';

»

Чтобы у компьютера было каждый раз новое число, то его надо каждый раз получать заново.
Т.е.
x:=random(99) поместить в тело цикла.
Код:

repeat
x:=random(99);
...
until upcase(flag)<>'Y'; »[/q]


Sprint116 21-05-2013 23:43 2153795

Огромное спасибо :)


Время: 01:43.

Время: 01:43.
© OSzone.net 2001-