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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2008, 15:27   #1
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию Оператор условия

Код:
number:=number-i;
number:=number-ai;
if number-i<=0 then writeln('Вы проиграли');
if number-ai<=0 then writeln('Вы победили');
При таком условии программа по окончанию цикла выводит

Вы проиграли
Вы победили

как заставить его думать и выводить правильно?
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 22.02.2008, 15:32   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

if number-i<=0 then writeln('Вы проиграли')
else
if number-ai<=0 then writeln('Вы победили');
Думать-то вам надо, а железяке это ни к чему.
puporev вне форума Ответить с цитированием
Старый 22.02.2008, 15:36   #3
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию

При таком условии я всегда проигрываю =)
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 22.02.2008, 15:48   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Мне кажется что алгоритм какой-то не очень, попробуй моделировать ситуацию:
number = 10
i = 5
ai = 3
ты делаешь
number = number - i //т.е. number = 5
потом
number - ai // number = 3
потом получается опять вычитаешь из number'a тут получается что они оба меньше нуля и будет выводится то что идет первое на проверку
Объясни задачу
Hollander вне форума Ответить с цитированием
Старый 22.02.2008, 16:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Приоритеты не забываем:
Код:
number:=number-i;   
number:=number-ai;   
if ((number-i)<=0) then writeln('Вы проиграли');   
if (number-ai)<=0) then writeln('Вы победили');
Во-вторых: Задача непонятна вкорне, и алгоритм такой ну совсем не катит
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2008, 16:03   #6
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию

Не факт что они оба меньше 0 иногда иначе, но то что берет первое условие ето факт.
Задача:
Создать известную игру кто вытянит последнбб палочку тот проиграл
Вот весь код
Код:
uses crt;
 var
 i,ai,number:integer;
 begin
 clrscr;
 number:=15;
 while number>0 do
 begin
 writeln;
 textcolor(red);
 if number=15 then writeln('| | | | | | | | | | | | | | |');
 if number=14 then writeln('| | | | | | | | | | | | | |');
 if number=13 then writeln('| | | | | | | | | | | | |');
 if number=12 then writeln('| | | | | | | | | | | |');
 if number=11 then writeln('| | | | | | | | | | |');
 if number=10 then writeln('| | | | | | | | | |');
 if number=9 then writeln('| | | | | | | | |');
 if number=8 then writeln('| | | | | | | |');
 if number=7 then writeln('| | | | | | |');
 if number=6 then writeln('| | | | | |');
 if number=5 then writeln('| | | | |');
 if number=4 then writeln('| | | |');
 if number=3 then writeln('| | |');
 if number=2 then writeln('| | ');
 if number=1 then writeln('|');
 if number<=0 then writeln('Палочки кончились');
 writeln;
 textcolor(green);
 write('Вы: ');
 readln(i);
 if i=1 then number:=number-i else number:=number-0;
 if i=2 then number:=number-i else number:=number-0;
 if i=3 then number:=number-i else number:=number-0;
 textcolor(yellow);
 if i>3 then writeln('Вы не можете взять больше 3');
 if i<1 then writeln('Вы не можете взять меньше 1');
 writeln('Осталось палочек: ',number);
 randomize;
 ai:=random(3);
 ai:=ai+1;
 textcolor(green);
 writeln('Соперник: ',ai);
 number:=number-ai;
 textcolor(yellow);
 writeln('Осталось палочек: ',number);
 if number-ai<1 then writeln('Вы победили')
 else
 if number-i<1 then writeln('Вы проиграли');
 end;
 readkey;
 end.
тут же вопрос, над ним я еще не думал...как видно если человек вводит число вне диапазон от 1 до 3 то ничего не происходит, он пропускает ход и ходит AI как сделать что AI не ходил пока пользователь не сделает результативный ход?
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 22.02.2008, 16:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как сделать что AI не ходил пока пользователь не сделает результативный ход?
Всмысле это чтоб прога не ходила если игрок попытается взять более трех спичек? ТОгда можно так:
Код:
repeat
 write('Вы: ');   
 readln(i);   
until (i in [0..3]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2008, 17:06   #8
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Всмысле это чтоб прога не ходила если игрок попытается взять более трех спичек? ТОгда можно так:
Код:
repeat
 write('Вы: ');   
 readln(i);   
until (i in [0..3]);
Спасибо, так все таки как условия победы и поражения прописать?
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 22.02.2008, 18:49   #9
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Так смотри у тебя же условие: кто вытащит последнюю, тот проиграл, т.е. после каждого ходов компа и человека проверяй number <= 0 и выводи чей ход был тот и проиграл
Hollander вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу создать условия Еленка Помощь студентам 4 21.05.2008 12:20
Пропуск условия if. Delphi 7 Дикий Помощь студентам 11 12.05.2008 22:49
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10
Проверка условия Luciferium БД в Delphi 1 05.06.2007 16:23
Использование оператора условия Virtson Microsoft Office Access 2 15.12.2006 16:13