Задача - Угадать случайное число
- программирование на разных языках

Задача — Угадать случайное число — программирование на разных языках

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.


Задача — Угадать случайное число
— программирование на Pascal, Си, Кумир, Basic-256, Python

В программе генерируется случайное целое число от 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 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 <stdio.h>
 
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("Не угадали. Это число %dn", n);
} 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

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий