среда, 16 февраля 2011 г.

Случайные числа, счетчики и аккумуляторы -- и игры

Задание №1
Напиши класс, который принимает с клавиатуры целое число и затем генерирует ("придумывает") случайное число из следующего диапазона:

· "центром диапазона" является введенное с клавиатуры число;

· количество чисел в диапазоне равно 11.

Класс должен определять, "угадал" ли компьютер введенное число и выводить на экран одно из сообщений (в зависимости от соотношения введенного и "придуманного" чисел"):

· угадал – если числа совпали;

· слишком большое – если "придуманное" компьютером число больше введенного с клавиатуры

· слишком маленькое – если "придуманное" компьютером число меньше введенного с клавиатуры

Задание №2
Напиши класс, представляющий версию игры из задания №1 – только в этом случае компьютер должен играть сам с собой!

Задание №3
Напиши класс, представляющий версию игры из задания №1 (или №2 – по выбору) со следующими изменениями:

  • · в игре 10 повторов ("кругов");
  • · надо выдавать не только сообщение о результате игры в каждом круге, но и статистику: сколько раз какой из результатов реализовывался

Задание №4
Как известно, при игре в "двадцать одно (очко)" у каждой карты есть численное значение.

Напиши класс, который "выбрасывает три карты" (генерирует три случайных числа – в каких пределах?) и определяет, какой из вариантов (недобор, перебор, очко) реализовался.

Задание №5
Напиши класс, который повторяет задание №4, но предоставляет игроку получить, если он того захочет, еще и четвертую карту.

пятница, 4 февраля 2011 г.

Задачи на случайные числа

Я предлагаю вам несколько задач, в которых показано использование случайных чисел – они годятся и для отработки правил использования случайных чисел, и для понимания того, как с помощью случайных чисел можно делать компьютерное моделирование разных процессов.

Задача №1

Два человека играют в кости по следующим правилам: в каждом раунде игры (а она состоит из 10 раундов) каждый из участников бросает "кость" (кубик, на гранях которого значения от 1 до 6). В каждом раунде определяется победитель – или фиксируется состояние "ничья", в зависимости от значения, которое выпало на кубике-"кости" участника.

Напиши класс (программу), которая моделирует эту игру, указывая для каждого раунда, кто из игроков набрал в этом раунде больше очков – или сообщая о состоянии "ничья".

Задача №2

Напиши класс (программу), которая создает и выводит на экран 15 случайных целых чисел, заканчивающихся на ноль, и принадлежащих к диапазону двузначных чисел.

Задача №3

Напишите класс (программу), которая выполняет следующие действия:

  1. Принимает с клавиатуры два целых числа.
  2. Создает и выводит на экран 20 случайных чисел в диапазоне от первого, только что введенного с клавиатуры, значения, до второго значения, также введенного с клавиатуры перед этим. Можно исходить из предположения, что первое из вводимых чисел всегда меньше второго.

Например, если с клавиатуры были введены значения -8 и 17, то класс создает 20 случайных чисел в диапазоне от -18 до 17 (включая сами эти значения)

Задача №4

Напишите вариант предыдущей задачи, исходя из того, что неизвестно, какое из вводимых с клавиатуры значений больше, а какое – меньше.

Задача №5

Напиши класс (программу), которая создает и выводит на экран 35 оценок (оценкой считается значение от 1 до 5) – и определяет, была ли среди них хоть одна "пятерка".

После вывода оценок на экран следует в отдельной строке вывести и текстовое сообщение в зависимости от того, была или не была хоть одна "пятерка" среди оценок.

Примечание: в Израиле оценки выставляются по 100-балльной системе и желающие могут написать "израильский вариант" этой задачи.

воскресенье, 30 января 2011 г.

Работа со случайными числами

Для работы со случайными числами в языке Java используется оператор Math.random(), который выбирает случайным образом одну из десятичных дробей из диапазона от 0 (включая) до 1 (не включая).

Для того, чтобы увеличить диапазон выбора чисел, умножают оператор на соответствующее значение: например, 60*Math.random() выбирает случайным образом одну из десятичных дробей из диапазона от 0 (включая) до 60 (не включая).

Для того, чтобы "сдвинуть" диапазон выбора чисел, добавляют к оператору число (положительное или отрицательное), устанавливающее диапазон сдвига: например, 60*Math.random()+10 выбирает случайным образом одну из десятичных дробей из диапазона от 10 (включая) до 70 (не включая).

Для того, чтобы использовать этот оператор для выбора целых чисел, производят действие "преобразования типа": перед заключенным в скобки выражением ставят в скобках указание на тип, в который надо произвести преобразование – в нашем случае, это (int).

Таким образом, общий вид строки для выбора случайных чисел выглядит следующим образом (пример):

x=(int)(75*Math.random()-20)

"в переменную х заносится случайным образом выбранное целое число, одно из 75 чисел, начиная с -20" – или "в переменную х заносится случайным образом выбранное число из диапазона от -20 до +54"

Предлагаю вам для самостоятельного написания несколько заданий на программы с использованием случайных чисел.

Задание №1

Напиши программу (класс), которая выводит на экран 20 случайных целых чисел из диапазона двузначных чисел.

Задание №2

Напиши программу (класс), которая выводит на экран 20 случайных целых чисел из диапазона "однозначные" (включая и положительные, и отрицательные). После этого в отдельной строке программа должна указывать количество нулей, оказавшихся среди выведенных на экран чисел.

Задание №3

Напиши программу (класс), которая выводит на экран 20 случайных целых четных чисел из диапазона от 20 до 40.

Задание №4

Напиши программу (класс), которая выбирает 20 случайных целых чисел из диапазона от -15 до +10 – но выводит на экран только однозначные из выбранных чисел.

Задание №5

Напиши программу (класс), которая выбирает 20 случайных целых чисел из диапазона от 0 до 100, но выводит на экран только те из них, в которых сумма цифр является двузначным числом.

Задание №6

Напиши программу (класс), которая выбирает 20 случайных целых чисел из диапазона от -20 до +20, но выводит на экран каждое из них дважды – с выбранным знаком и с противоположным. Пары чисел следует отделять друг от друга символом #.

пятница, 21 января 2011 г.

Конечный детерминистский автомат

На последнем занятии шла речь о КДА (конечный детерминистский автомат) -- структура, которая позволяет проверить соответствие данных заранее установленным, оговоренным условиям, требованиям.
Я размещаю несколько примеров таких КДА -- а вы:
1-определите, на основании какого алфавита проверяются данные;
2-приведите примеры "слов" (данных), которые автомат оценивает как "правильные" и тех, на которые КДА реагирует -- "неверно"
3-определите, какой язык (набор слов) принимает автомат -- то есть дайте общую формулировку
=====================












понедельник, 10 января 2011 г.

Каникулы закончились? Тогда работаем дальше!

Задание 1

Напиши программу, которая выводит на экран (в строку с пробелами) все двузначные целые положительные числа, в которых и цифра единиц, и цифра десятков делятся на три (без остатка).

Задание 2

Напиши программу, которая выводит на экран (в строку с пробелами) все двузначные целые положительные числа, в которых и цифра единиц, и цифра десятков делятся на три с одинаковым остатком.

Задание 3

Напиши программу, которая выводит на экран (в строку с пробелами) все двузначные целые положительные числа, в которых и цифра единиц, и цифра десятков делятся на три с разными остатками.

Задание 4

Напиши программу, которая выводит на экран (в строку с пробелами) все трехзначные целые положительные числа, в которых две последних цифры (десятков и единиц) образуют двузначное число, делящееся без остатка на первую цифру (сотен).

Задание 5

Напиши программу, которая выводит на экран (в строку с пробелами) все трехзначные целые положительные числа, в которых две первых цифры (сотен и десятков) образуют двузначное число, делящееся без остатка на последнюю цифру (единиц).

Задание 6

Напиши программу, которая:

  • сначала вводит с клавиатуры целое положительное двузначное число (нет необходимости проверять соответствие введенного значения этому условию);
  • затем выводит на экран (в строку с пробелами) трехзначные целые положительные числа, в которых предварительно введенное двузначное число является "внутренней" частью (как, например, 23 для 123 или 623).

Задание 7

Напиши программу, которая:

  • сначала вводит с клавиатуры целое положительное двузначное число (нет необходимости проверять соответствие введенного значения этому условию);
  • затем выводит на экран (в строку с пробелами) четырехзначные целые положительные числа, в которых предварительно введенное двузначное число является "внутренней" частью (как, например, 23 для 1523, или 6237, или 4230).

Задание 8

Напиши программу, которая:

  • сначала вводит с клавиатуры целое положительное двузначное число (нет необходимости проверять соответствие введенного значения этому условию);
  • затем выводит на экран (в строку с пробелами) четырехзначные целые положительные числа, в которых и две первых цифры, и две последних цифры одновременно образуют положительные двузначные числа, равные предварительно введенному двузначному числу (как, например, 2323 для введенного значения 23).

Задание 9

Напиши программу, которая:

  • сначала вводит с клавиатуры целое положительное двузначное число (нет необходимости проверять соответствие введенного значения этому условию);
  • затем выводит на экран (в строку с пробелами) четырехзначные целые положительные числа, в которых две первых цифры образуют положительное двузначное число, равное предварительно введенному двузначному числу – а две последних цифры образуют число с порядком цифр, обратным порядку цифр во введенном числе (как, например, 2332 для введенного значения 23).

Задание 10

Напиши программу, которая:

  • сначала вводит с клавиатуры целое положительное двузначное число (нет необходимости проверять соответствие введенного значения этому условию);
  • затем выводит на экран (в строку с пробелами) четырехзначные целые положительные числа, в которых две последних цифры образуют положительное двузначное число, равное предварительно введенному двузначному числу – а две первых цифры образуют число с порядком цифр, обратным порядку цифр во введенном числе (как, например, 3223 для введенного значения 23).