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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 00:43   #11
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Возможно, вы неверное записали конструкцию цикла Repeat.
Она пишется так:

Код:
Repeat
	<оператор 1>;
	<оператор 2>;
	.......
	<оператор N>;
Until <Логическое выражение>
Цикл завершится в том случае, если Логическое выражение, поставленное после слова Until, будет ИСТИННЫМ.

У вас так же записано? А вообще, покажите то место, где у вас возникает ошибка.
Т.е использовать не while а repeat?
viks1 вне форума Ответить с цитированием
Старый 07.01.2012, 00:58   #12
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вы покажите код, где у вас возникает ошибка.
Цитата:
Т.е использовать не while а repeat?
Это плохой подход, уходить от того, что вызывает ошибку. Нет никакой гарантии того, что, написав цикл While, у вас всё пойдёт гладко. В большинстве случаев (но не всегда) цикл Repeat можно заменить While или наоборот. Однако, при такой замене стоит помнить, что при определённом условии, цикл While может вообще ни разу не выполниться, в то время, как Repeat при этом же условии выполнится лишь один раз. Да, и при замене стоит поменять условия на его отрицание.
Вадим Мошев вне форума Ответить с цитированием
Старый 07.01.2012, 01:09   #13
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Код:
program game;
uses
crt;
var
a,b:integer;
i:byte;
label
f;
begin
  writeln('загадайте число');
  readln(a);
  clrscr;
  writeln('угадайте число, попыток всего 5:)');

i:=1;
 if i<=5 then

 repeat
 begin
 inc(i);
  
f:  readln(b);
 if b=111 then writeln('ваш код ',a) else
 if a=b then writeln('вы выйграли') else
 if a<b then writeln('введите число поменьше') else
 if a>b then writeln('введите число побольше');

 end;
 until a=b else
 writeln('количество попыток исчерпано');

readln;
end.
да, у меня получилось сделать выход с приложения по причине если ты выиграл, но каким образом мне в until влепить + выход с цикла по причине исчерпавшихся попыток?
viks1 вне форума Ответить с цитированием
Старый 07.01.2012, 01:12   #14
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
i:=0;
repeat
 inc(i);
 readln(b);
 if b=111 then writeln('ваш код ',a) else
 if a=b then writeln('вы выйграли') else
 if a<b then writeln('введите число поменьше') else
 writeln('введите число побольше');
until (a=b)  or (i=5);
if (i = 5) and (a<>b) then writeln('количество попыток исчерпано')
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 07.01.2012, 03:02   #15
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
i:=0;
repeat
 inc(i);
 readln(b);
 if b=111 then writeln('ваш код ',a) else
 if a=b then writeln('вы выйграли') else
 if a<b then writeln('введите число поменьше') else
 writeln('введите число побольше');
until (a=b)  or (i=5);
if (i = 5) and (a<>b) then writeln('количество попыток исчерпано')
когда условие удовлетворяет вот это (a<>b) зачем тогда этоif a=b then writeln('вы выйграли') ???
я на всякий случай проверил: первый запрос на ввод, и не важно, выйграл, нет, полюбэ вылет.

Последний раз редактировалось viks1; 07.01.2012 в 03:05.
viks1 вне форума Ответить с цитированием
Старый 07.01.2012, 03:04   #16
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Вы покажите код, где у вас возникает ошибка.

Это плохой подход, уходить от того, что вызывает ошибку. Нет никакой гарантии того, что, написав цикл While, у вас всё пойдёт гладко. В большинстве случаев (но не всегда) цикл Repeat можно заменить While или наоборот. Однако, при такой замене стоит помнить, что при определённом условии, цикл While может вообще ни разу не выполниться, в то время, как Repeat при этом же условии выполнится лишь один раз. Да, и при замене стоит поменять условия на его отрицание.
вы были правы, я к while хотел прилепить until, вот и возникали ошибки.
viks1 вне форума Ответить с цитированием
Старый 07.01.2012, 07:46   #17
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
я на всякий случай проверил: первый запрос на ввод, и не важно, выйграл, нет, полюбэ вылет.
Может это все таки руки?
не угадал:
Цитата:
загадайте число
8
угадайте число, попыток всего 5
1
введите число побольше
4
введите число побольше
6
введите число побольше
6
введите число побольше
4
введите число побольше
количество попыток исчерпано
угадал:
Цитата:
загадайте число
5
угадайте число, попыток всего 5
1
введите число побольше
2
введите число побольше
3
введите число побольше
4
введите число побольше
5
вы выйграли
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.01.2012, 03:29   #18
viks1
человек
Форумчанин
 
Аватар для viks1
 
Регистрация: 11.05.2009
Сообщений: 517
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Может это все таки руки?
может не спорю)
Часто бывает, у кого то выходит а у меня нет... попробую еще раз)
viks1 вне форума Ответить с цитированием
Старый 08.01.2012, 05:35   #19
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

нуу несколько слов по поводу задумки, а именно игры "угадай" число

Цитата:
Я ввожу число, а там уже игрок вводит свои значения.
Очень интересно где, это там?
Не проще ли организовать рандом числа! то есть
Код:
randomize;
chislo := random(100);
любое число от 0 до 100! и ничего вводить не надо!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 08.01.2012, 18:32   #20
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
нуу несколько слов по поводу задумки, а именно игры "угадай" число



Код:
randomize;
chislo := random(100);
любое число от 0 до 100! и ничего вводить не надо!
На самом деле, здесь будет генерироваться число от нуля до 99, а не до ста.
Функция Random(N) возвращает случайно число от нуля, до N-1.
Чтобы получить число от нуля до 100, надо написать: Random(101)
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытое видеонаблюдение посредством обычной USB камеры Stilet Свободное общение 1 02.08.2011 20:23
Скрытое сохранение паролей введённые на том же компьютере. gargon Безопасность, Шифрование 10 25.12.2010 11:30
Как сделать чтобы любое введенное значение в выделенной ячейке перемещалось на 3 клетки? Ann Lastovka Microsoft Office Excel 1 11.08.2010 17:56
Просидел всю ночь! ((( Сам так и не смог! Помогите!!! *Отобразить последнее введенное значение * Dvornick Microsoft Office Excel 3 24.09.2008 19:21
Отобразить последнее введенное значение RUBEY Microsoft Office Excel 5 21.03.2007 11:01