IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Угадай число, запутался
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


вот решил написать эту программу, та както не работает...
Помогите, пожалуйста
Uses Crt;

procedure Menu;
begin
clrscr();
TextColor(LightGreen);
WriteLn;

WriteLn(' УГАДАЙ ЧИСЛО');
WriteLn;
WriteLn('Сыграем?');
WriteLn(' y: Старт');
WriteLn;
WriteLn(' n: Выход');
WriteLn( #10#13, #10#13, #10#13, #10#13, #10#13);
WriteLn(' Выбор: ');
end;


procedure victory(j:byte);
begin
writeln('Поздравляем Вы победили за', j ,'попыток');
readln;
read;
end;

procedure looser (RandInt:byte);
begin
writeln('Вы проиграли...');
writeln('Загаданное число:' , RandInt );
readln;
read;
end;


procedure BeginGame;
var
RandInt, UserInt, j: byte;
const
MaxInt: byte =100;
MaxJ: byte =10;
begin
TextColor(LightGreen);
RandInt:=random(MaxInt);
for j:=1 to MaxJ do begin
WriteLn(' Введите число');
ReadLn(UserInt);
case byte((UserInt - RandInt) > 0) + 2 * byte((UserInt - RandInt) < 0) of
0: begin victory(j); exit end;
1: writeln('Загаданное число меньше введеного');
2: writeln('Загаданное число больше введеного');

end;
end;
menu;
end;

procedure EndGame;
begin
TextColor(LightRed);
WriteLn(' ПРИХОДИТЕ ЕЩЕ...');

end;

function Choice:boolean;
var
ch: char;
begin
ch:='q';
while (ch<>'y') or (ch<>'n') do begin
ch := ReadKey;
case ch of
'y':Choice:=true;
'n':Choice:=false;
end;
end;

end;
begin
Menu;
if Choice =true then BeginGame
else EndGame;
end.

ЗЫ -- компилятор FP.

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


вот так:
function Choice:boolean;
var ch: char;
begin
ch:='q';
while (ch<>'y') and (ch<>'n') do
ch:=ReadKey;
case ch of
'y':Choice:=true;
'n':Choice:=false;
end;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


дурацкая ошибка...

мисс_граффити, спасибо..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


немного короче
function Choice: Boolean;
var
ch: char;
begin
repeat ch := readkey until UpCase(ch) in ['Y', 'N'];
Choice := (UpCase(ch) = 'Y');
end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


klem4, здорово... + ставить сегодня не могу(а так бы поставил...)


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


собственно подредактировал (хотел зациклить, как-то не выходит) посмотрите пожалуйста..
Uses Crt;

procedure Menu;
begin
clrscr();
TextColor(LightGreen);
WriteLn;

WriteLn(' УГАДАЙ ЧИСЛО');
WriteLn;
WriteLn('Сыграем?');
WriteLn(' y: Старт');
WriteLn;
WriteLn(' n: Выход');
WriteLn( #10#13, #10#13, #10#13, #10#13, #10#13);
WriteLn(' Выбор: ');
end;


procedure victory(j:byte);
begin
writeln('Поздравляем Вы победили за', j ,'попыток');
repeat until not keypressed;
(*Menu;*)
end;

procedure looser (RandInt:byte);
begin
writeln('Вы проиграли...');
writeln('Загаданное число:' , RandInt );
repeat until not keypressed;
(*Menu;*)
end;


procedure BeginGame;
var
RandInt, UserInt, j: byte;
const
MaxInt: byte =100;
MaxJ: byte =10;
sleep: integer =1;
begin
writeln(#10#13, 'Поехали!', #10#13);
TextColor(LightGreen);
RandInt:=random(MaxInt);
for j:=1 to MaxJ do begin
WriteLn(' Введите число');
ReadLn(UserInt);
Delay(sleep);
case byte((UserInt - RandInt) > 0) + 2 * byte((UserInt - RandInt) < 0) of
0: begin victory(j); exit end;
1: writeln('Загаданное число меньше введеного<');
2: writeln('Загаданное число больше введеного>');

end;
end;
looser(RandInt);
end;

procedure EndGame;
begin
TextColor(LightRed);
WriteLn(' ПРИХОДИТЕ ЕЩЕ...');
Delay(2000);

end;

function Choice: Boolean;
var
ch: char;
begin
repeat ch := readkey until UpCase(ch) in ['Y', 'N'];
Choice := (UpCase(ch) = 'Y');
end;

begin
repeat
Menu;
if Choice =true then BeginGame
else EndGame;
until Choice =true;
end.


заранее благодарен.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ты второй раз вызывать Choice не должен - достаточно сделать так:

function EndGame: boolean;
begin
TextColor(LightRed);
WriteLn(' ПРИХОДИТЕ ЕЩЕ...');
Delay(2000);
EndGame := true;
end;


и теперь:
const
b: boolean = false;
begin
repeat

Menu;
if Choice then BeginGame
else b := EndGame;

until b;
end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


по моему надо еще как-то изменить procedure victory...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 22.09.2020 12:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name