Угадать случайное число

ЗАДАЧА

В программе генерируется случайное целое число от 0 до 100. Пользователь должен его отгадать не более чем за 10 попыток. После каждой неудачной попытки должно сообщаться больше или меньше введенное пользователем число, чем то, что загадано. Если за 10 попыток число не отгадано, то вывести загаданное число.

  1. Сгенерировать случайное число.
  2. Ввести счетчик попыток. Присвоить ему значение 1.
  3. Пока счетчик попыток меньше, либо равен 10
    1. запрашивать у пользователя очередное число,
    2. если оно больше загаданного, то выводить «много»,
    3. если оно меньше загаданного, то выводить «мало»,
    4. иначе сообщать, что число угадано и прерывать выполнение цикла,
    5. увеличивать счетчик попыток на единицу.
  4. После цикла, если число не было угадано, то вывести сообщение о том, что попытки исчерпаны, и какое число было загадано компьютером.

Самый верный способ отгадать число менее чем за 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

Язык Си


#include

main() {
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("Не угадали. Это число %d\n", 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

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Pascal

угадать число от 1 до 100 паскаль

var n,u,i: byte;
begin
randomize;
n := random(100);
i := 1;
writeln('Отгадайте число за 10 попыток');
while i 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
Язык Си

#include

main() {
srand(time(NULL));
int n,u,i;
n = rand() % 100;
i = 1;
while (i n) printf("Много\n");
else {
printf("Угадано!\n");
break;
}
i += 1;
}
if (i == 11)
printf("Не угадали. Это число %d\n", n);
}
Python

угадать число от 1 до 100 python (питон)

from random import random
n = round(random() * 100)
i = 1
print("Компьютер загадал число. Отгадайте его. У вас 10 попыток")
while i 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 попыток", нс
нц пока in то вывод "Много", нс
иначе
если u< n то вывод "Мало", нс
иначе
вывод "Угадано!"
выход
все
все
i := i+1
кц
если i = 11 то
вывод "Вы не угадали число ", n
все
кон
Basic-256

n = int(rand * 100)
i = 1
print "Угадайте число от 1 до 100"
while i n then
print "Много"
else
print "Угадано!"
end
endif
endif
i = i + 1
endwhile
if i = 11 then print "Не угадано число " + n