Перейти к содержанию
Угадать случайное число
Просмотров 10.6к. Обновлено 29 октября 2021
- Сгенерировать случайное число.
- Ввести счетчик попыток. Присвоить ему значение 1.
- Пока счетчик попыток меньше, либо равен 10
- запрашивать у пользователя очередное число,
- если оно больше загаданного, то выводить «много»,
- если оно меньше загаданного, то выводить «мало»,
- иначе сообщать, что число угадано и прерывать выполнение цикла,
- увеличивать счетчик попыток на единицу.
- После цикла, если число не было угадано, то вывести сообщение о том, что попытки исчерпаны, и какое число было загадано компьютером.
Самый верный способ отгадать число менее чем за 10 попыток — это делить диапазон на 2. Например, если число лежит в пределах от 0 до 100, то введя 50 мы сразу сокращаем диапазон поиска в два раза. Если было сказано, что загаданное число меньше 50-ти, то вводим 25 и таким образом снова сокращаем диапазон в 2 раза.
Если следовать этому правилу то потребуется 6-7 попыток, т.к. число 100 (изначальная длина диапазона) лежит в пределах между 26 и 27.
Pascal
угадать число от 1 до 100 паскаль
var n,u,i: byte;
begin
randomize;
n := random(100);
i := 1;
writeln('Отгадайте число за 10 попыток');
while i <= 10 do begin
write(i,'-я попытка: ');
readln(u);
if u > n then
writeln('Много')
else
if u < n then
writeln('Мало')
else begin
writeln('Угадано!');
break;
end;
i := i + 1;
end;
if i = 11 then
writeln('Вы не угадали. Было загадано ',n);
end.
Отгадайте число за 10 попыток
1-я попытка: 47
Мало
2-я попытка: 85
Много
3-я попытка: 59
Мало
4-я попытка: 70
Мало
5-я попытка: 78
Много
6-я попытка: 74
Угадано!Отгадайте число за 10 попыток
1-я попытка: 90
Много
2-я попытка: 80
Много
3-я попытка: 70
Много
4-я попытка: 60
Много
5-я попытка: 50
Мало
6-я попытка: 59
Много
7-я попытка: 58
Много
8-я попытка: 59
Много
9-я попытка: 57
Много
10-я попытка: 56
Много
Вы не угадали. Было загадано 55
Язык Си
#includemain() {
srand(time(NULL));
int n,u,i;
n = rand() % 100;
i = 1;
while (i<=10) {
printf("%d-я попытка: ", i);
scanf("%d", &u);
if (u < n) printf("Малоn");
else
if (u > n) printf("Многоn");
else {
printf("Угадано!n");
break;
}
i += 1;
}
if (i == 11)
printf("Не угадали. Это число %dn", n);
}
Python
угадать число от 1 до 100 python (питон)
from random import random
n = round(random() * 100)
i = 1
print("Компьютер загадал число. Отгадайте его. У вас 10 попыток")
while i <= 10:
u = int(input(str(i) + '-я попытка: '))
if u > n:
print('Много')
elif u < n:
print('Мало')
else:
print('Вы угадали с %d-й попытки' % i)
break
i += 1
else:
print('Вы исчерпали 10 попыток. Было загадано', n)
В Питоне есть расширение else для цикла while, которое выполняется единожды, когда логическое выражение в заголовке while возвращает ложь.
КуМир
алг угадай число
нач
цел n,u,i
n := int(rand(0,100))
i := 1
вывод "Отгадай число не более чем за 10 попыток", нс
нц пока i<=10
вывод i,"-я попытка: "
ввод u
если u>n то вывод "Много", нс
иначе
если u< n то вывод "Мало", нс
иначе
вывод "Угадано!"
выход
все
все
i := i+1
кц
если i = 11 то
вывод "Вы не угадали число ", n
все
кон
Basic-256
n = int(rand * 100)
i = 1
print "Угадайте число от 1 до 100"
while i <= 10
print i + "-я попытка: ";
input u
if u < n then
print "Мало"
else
if u > n then
print "Много"
else
print "Угадано!"
end
endif
endif
i = i + 1
endwhile
if i = 11 then print "Не угадано число " + n
Компьютер загадывает целое число, случайным образом, в диапазоне 1-100.
Человек должен отгадать его за возможно меньшее число попыток. В ответ на попытку человека компьютер выдает подсказку: введенное число меньше загаданного или больше.
Можно также выдавать подсказку типа «горячо»-«холодно», оговорив предварительно диапазоны (например, «горячо» — если введенное и загаданное число отличаются меньше чем на 5, и «холодно» — для всех остальных случаев).
Если число угадано, выдаются поздравления и предложение начать новую игру
или выйти из программы.
Включайте Вашу фантазию!
_______________________________________________________________
Генератор случайных чисел:
Randomize; — процедура инициализации генератора случайных чисел.
Рекомендуется использовать перед вызовом Random.
a:= Random(100); — функция генерации псевдослучайного числа.
_______________________________________________________________
3 / 3 / 0 Регистрация: 24.01.2010 Сообщений: 30 |
|
1 |
|
Игра «Угадай число»10.05.2010, 15:32. Показов 18746. Ответов 3
Игра «Угадай число». Один из играющих задумывает число от 1 до 1000, другой пытается угадать его за 10 вопросов вида: верно ли, что задуманное число больше такого-то числа. Нужен алгоритм. Помогите Добавлено через 1 час 7 минут
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
10.05.2010, 15:32 |
Ответы с готовыми решениями:
игра «Угадай число»
«Угадай число» 3 |
er777 2 / 2 / 0 Регистрация: 07.05.2010 Сообщений: 33 |
||||
10.05.2010, 16:14 |
2 |
|||
Вроде так!!!! Добавлено через 2 минуты
1 |
3 / 3 / 0 Регистрация: 24.01.2010 Сообщений: 30 |
|
10.05.2010, 19:14 [ТС] |
3 |
с угадыванием я сам знаю как написать. Добавлено через 2 часа 22 минуты
0 |
Puporev Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
10.05.2010, 19:52 |
4 |
|||
Если грамотно вводить числа, брать середину интервала, то 10 попыток достаточно чтобы угадать, проверял.
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
10.05.2010, 19:52 |
Помогаю со студенческими работами здесь Число прописью
Решение заданий типа «Array»,»Matrix»,»String»,»File»,»Text»»» Написать программу проверки правильности написания сочетаний «жи», «ши», «ча», «ща», «чу», «щу». Исправить ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
Программа «Угадай число»
Задача:
Отгадать
целое число, которое «загадал»
компьютер в определенном диапазоне.
Описание
переменных:
a
– число, «загаданное» компьютером;
b
– очередное число, вводимое пользователем.
Алгоритм
решения задачи:
Программа
генерирует псевдослучайное число,
которое записывается в
переменную
a.
Пока
число a не совпадет с числом b, пользователю
будет предлагаться ввести очередное
число. При этом, если b > a, то на экран
будет выдаваться сообщение «Много».
Иначе будет проверяться условие b < a.
При его положительном значении появится
сообщение «Мало», иначе сообщение
«Угадал».
Не
трудно понять, что если b не больше и не
меньше a, то значит оно равно a. В таком
случае логическое выражение при while
вернет false,
и цикл прервется.
Программа
на языке Паскаль:
var
a,b:
integer;
begin
randomize;
a
:= random(100);
while
a <> b do begin
write(‘Введи
число:
‘);
readln(b);
if
b > a then
writeln(‘Много’)
else
if
b < a then
writeln(‘Мало’)
else
writeln(‘Угадал’);
end;
readln
end.
Примечания:
Угадать
число всегда можно не более чем через
6-7 попыток, если делить каждый оставшийся
диапазон пополам.
Перевод римских чисел в арабские. Пример автоматного распознавателя
Задача:
Можно
использовать вложенные операторы case.
Это удобно, например, при реализации
автоматных распознавателей, которые
дают способ наглядной записи алгоритмов
распознавания текстов.
Представленная
таблица предназначена для перевода
римских чисел, составленных из цифр X,
V, I.
Алгоритм |
|||
X |
V |
I |
|
1 |
n |
n |
n |
2 |
n |
n |
n |
3 |
ok |
ok |
n |
4 |
ok |
ok |
n |
5 |
ok |
ok |
n |
6 |
n |
n |
n |
7 |
ok |
ok |
ok |
Первый
столбец (цифры от 1 до 7) – это состояния
(state).
Для
расшифровки XIV начинаем с состояния 1.
Первый символ – ‘X’, поэтому смотрим
столбец ‘X’ и находим n := 10; state := 2. Итак,
полагаем n равным 10 и сдвигаем стрелку
на вторую строку. Теперь смотрим столбец,
определяемый вторым символом, т.е. ‘I’,
и находим n := n + 1; state := 6. Значение n, таким
образом, становится 10 + 1 = 11. Сдвигаем
стрелку к строке 6. Теперь в столбце ‘V’
находим n := n + 3; state := 7. Значение n становится
равным 11 + 3 = 14. Сдвигаем стрелку на строку
7 и замечаем, что любая следующая цифра
‘X’, ‘V’ или ‘I’ будет теперь ошибкой
(чисел XIVX, XIVV, XIVI не может быть).
Эта
таблица позволяет декодировать римскую
запись чисел, содержащих любое количество
цифр X (в начале) и цифры V, I, записанные
по обычным правилам:
I,
II, III, IV, V, VI, VII, VIII, IX, X, XI и т.д.
Вместе
с тем такое число как IIII будет воспринято
как ошибочное и переменная ok примет
значение false.
Для работы с цифрами M, D, C и L таблицу
можно расширить.
Программа
на языке Паскаль:
var
n, state: integer;
symbol:
char;
ok:
boolean;
begin state :=
1;
ok :=
true;
n := 0;
while not
eoln do begin
read(symbol);
if
((symbol = ‘X’) or (symbol = ‘V’) or (symbol = ‘I’)) then
case
state of
1:
case symbol of
‘X’:
begin n := 10; state := 2 end;
‘V’:
begin n := 5; state := 3 end;
‘I’:
begin n := 1; state := 6 end
end;
2:
case symbol of
‘X’:
begin n := 10; state := 2 end;
‘V’:
begin n := n + 5; state := 3 end;
‘I’:
begin n := n + 1; state := 6 end
end;
3:
case symbol of
‘X’,
‘V’: ok := false;
‘I’:
begin n := n + 1; state := 4 end
end;
4:
case symbol of
‘X’,
‘V’: ok := false;
‘I’:
begin n := n + 1; state := 5 end
end;
5:
case symbol of
‘X’,
‘V’: ok := false;
‘I’:
begin n := n + 1; state := 7 end
end;
6:
case symbol of
‘X’:
begin n := n + 8; state := 7 end;
‘V’:
begin n := n + 3; state := 7 end;
‘I’:
begin n := n + 1; state := 5 end
end;
7:
ok := false;
end
else
begin
if
ok then
writeln(n:2)
else
writeln(‘error’);
state
:= 1;
ok
:= true
end;
end;
readln
end.
Примечания:
Программа
не выдает ошибок, но и не работает.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Привет
какдела
, в этом воскресном посту, я расскажу как написать простую и интересную игру на паскале.
Блок-схема игры |
Игра будет называться «Угадай число».
сразу пишем:
program ugadai_chislo;
затем указываем переменные:
var
a,b,c:integer;
теперь можно начинать:
begin
задаем, «число a» — произвольное число от 1 до 100, а «число c» равное 0:
a:=random(100)
c:=0
Начинаем цикл с пост условием,
берем значение «числа b» с клавиатуры, проверяем его, и если a=b, выходим из цикла
repeat
readln(b);
c:=c+1;
if a<b then writeln(‘Загаданное число меньше‘) else
if a>b then writeln(‘Загаданное число больше‘);
until a=b;
Программа повторяет цикл, пока вы не отгадаете число, загаданное компьютером, а когда вы его отгадаете надо написать об этом и показать статистику:
writeln(‘Число угадано!‘);
writeln(‘Время: ‘,Milliseconds/1000);
writeln(‘Попыток: ‘,c);
Осталось только завершить программу:
end.
На всякий случай выложу весь код здесь
UPD: Сидя без инета, дописал игру, код здесь!