Спаситеее. Генератор случайных чисел

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Небо Принстона
Сообщения: 6
Зарегистрирован: 23 мар 2007, 12:24

23 мар 2007, 12:29

Спасите девушку от двойки. Напишите пожалуйста программу:
Запрограммировать игру «Угадай число». Программа с помощью генератора случайных чисел выбирает целое число в диапазоне от 0 до 9. Угадать это число за три попытки. После каждой попытки сообщается больше или меньше названное число задуманного.
:)
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

23 мар 2007, 12:48

Какой язык хотя бы?
Допустим, Паскаль ;)

Код: Выделить всё

uses crt;
var x,count,i:byte;
begin
 randomize;
 x:=random(10);
 for count:=1 to 3 do
 begin
  writeln('Введите число');
  readln(i);
  if i>x then writeln('Ваше число больше')
  else if i<x then writeln('Ваше число меньше')
  else begin writeln('Вы угадали!'); break;end;
 end;
if count>3 then writeln('Вы проиграли!') else writeln('Вы выиграли!');
readln;
end.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

23 мар 2007, 14:05

&quot писал(а):if count>3
Хыиуду, вроде опытный программист, а такие нелепые ошибки. Нет Begin к тому-же в цикле For.

Код: Выделить всё

uses crt;
var x,count,i:byte;
begin
 randomize;
 x:=random(10);
 count:=1;
 repeat
  writeln('Введите число');
  readln(i);
  if i>x then writeln('Ваше число больше')
  else if i<x then writeln('Ваше число меньше');
  inc(count);
 until (i=x) or (count>3);
if i<>x then writeln('Вы проиграли!') else writeln('Вы выиграли!');
readln;
end.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

23 мар 2007, 21:16

Хыиуду писал(а):Хыиуду, вроде опытный программист, а такие нелепые ошибки.
Никто не застрахован от ошибок, даже такой опытный программист, как Хыиуду. Но бывают такие неблагоприятные деньки, когда голова совсем "не в ту степь" думает-)]
uses crt;
var c,x,attempt: integer;{с-введённое число; x-загаданное; attempt - кол-во попыток}
begin {начать}
clrscr;
randomize; {инициализируем генератор случайных чисел}
x:=random(10); {загаданное число от 0 до 9}
attempt:=1; {первая попытка}
repeat {повторяем...}
writeln('Попытка №',attempt);
write('Введите число: '); readln(c); {вводим число}
if (c>9) or (c<0) then begin
writeln('Будь внимательнее!'); {контролируем выход за пределы интервала}
continue
end;
if c>x then writeln('Перебор!') else if c<x then writeln('Слишком мало...');
{если введенное число больше загаданного, написать "Перебор", иначе, "Слишком мало..."}
inc(attempt); {увеличиваем число использованных попыток}
until (c=x) or (attempt>3); {завершаем цикл, если загаданное число равно введённому, или если использовано больше трёх попыток}
If c=x then write('Поздравляем! Вы угадали число с ',attempt,' попытки!')
else
write('Вы проиграли...');
{если загаданное число равно введённому, тогда написать "Поздравляем...", иначе, "Вы проиграли..."}
readkey; {пауза}
end.
[/code]
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Небо Принстона
Сообщения: 6
Зарегистрирован: 23 мар 2007, 12:24

24 мар 2007, 12:41

Спасибо большое. только два я видимо получу. они требуют написать все через процедуру и функцию. :(
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

24 мар 2007, 19:17

Небо Принстона писал(а):Спасибо большое. только два я видимо получу. они требуют написать все через процедуру и функцию.
Эта проблема легкорешаема:

Код: Выделить всё

uses crt]
Сама сказала с процедурами и функциями, хотя они здесь не очень нужны...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

26 мар 2007, 10:47

А в чем ошибка? Это как раз из серии "левые штучки". Если выход из цикла будет естественным путем, а не через break, значение count будет равно 4. Можно проверить.
А насчет Begin согласен - мой косяк. Это уже начинаются заглюки с Python, где нету бегинов и эндов, а операторные скобки делаются путем добавления пробелов в начале строки.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

26 мар 2007, 11:30

&quot писал(а):А в чем ошибка? Это как раз из серии "левые штучки". Если выход из цикла будет естественным путем, а не через break, значение count будет равно 4. Можно проверить.
Вот это уже точно "левые" штучки. Видно ты с чем-то путаешь

Код: Выделить всё

var i:byte;
begin
 for i:=1 to 3 do
  writeln(i);
Writeln(i);
end.
Results

Код: Выделить всё

1
2
3
3
It's a long way to the top if you wanna rock'n'roll
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

26 мар 2007, 12:10

У меня ровно с тем же кодом (только выводил через Memo1.Lines.Add() ) получилось
1
2
3
4
Дельфи 7.0
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

26 мар 2007, 13:52

На Дельфи - согласен, но вот (uses crt ;) в проге, говорит о Паскале - а там немного по-другому.
It's a long way to the top if you wanna rock'n'roll
Ответить