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

Задачи на цикл while


Эти задачи – пока в основном для группы из Салавата, они до них добрались в прошлом году на Pascal'е, поэтому могут делать их теперь и на Java.

Разумеется, их могут делать все, кто знаком с работой цикла while)))

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

Задание №1
Одна из самых знаменитых задач: найти наибольший общий множитель для двух положительный целых чисел известным методом – вычитать из большего числа в паре меньшее число в паре, до тех пор, пока оба числа не станут равны друг другу.
Например, для пары (24, 32) этот метод дает следующие промежуточные результаты: (24,8)-(16,8)-(8,8), а для пары (121, 88) – (33,88)-(33,55)-(33,22)-(11,22)-(11,11).
Обратите внимание, что для пары 15, 22 наибольшим общим делителем является 1.
Напиши класс, который принимает с клавиатуры два целых положительных числа и находит описанным методом их наибольший общий делитель.

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

Задание №3
Напиши класс, который принимает с клавиатуры целое положительное число (обязательно – не оканчивающееся на 0!) и строит из него целое число – с обратным порядком цифр.
Класс должен проверить, являются ли введенное число и построенное из него число – равными (то есть – является ли введенное число симметричным, палиндромом).
Класс должен выводить на экран (как конечный результат) оба числа – вместе с соответствующим результату проверки текстовым сообщением.

Задание №4
Напишите класс, который принимает с клавиатуры целое положительное число и находит простое число, меньшее введенного с клавиатуры числа, и наиболее близкое к введенному с клавиатуры числу.

Задание №5, особое)))
Помните задачу про "найти цифру с известным порядковым номером в серии целых чисел"?
А что, если попробовать решить ее с использованием цикла while – точнее, с использованием вложенных циклов while?

суббота, 29 октября 2011 г.

Для тех, кто только начал (1)


Коллеги из Пензы и Пензенской области, начавшие в этом году работать по нашему совместному проекту, справедливо заметили, что большинство задач на блоге – для более продвинутых.
Именно поэтому сегодня – задачи для тех, кто по нашему проекту прошел первые главы; в основном – на ввод и вывод информации.


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

Задание №2
Напишите класс, который принимает с клавиатуры целое значение для переменной х, затем увеличивает ее значение в 3 раза, а после этого – уменьшает ее же значение на 8.
После каждого изменения значения переменной х следует выводить на экран ее значение, сопровождая его текстовым сообщением Значение переменной Х=.
Примечание: обратите внимание на разницу между заданием №1 и заданием №2.

Задание №3
Напишите класс, который принимает с клавиатуры два целых числа (в переменные а и b), затем меняет значения в этих переменных и выводит новые значения переменных на экран (в одной строке), сопроводив вывод пояснительными сообщениями.

Задание №4
Напишите класс, который принимает с клавиатуры целое число, а затем выводит на экран:
в первой строке – три числа, предыдущих по отношению к введенному, в возрастающем порядке и символами --> после чисел;
во второй строке – само введенное с клавиатуры число и два последующих, но в убывающем порядке, с текстом Вниз после чисел.
Например, если с клавиатуры будет введено число 8, то вывод на экран будет выглядеть так:
5 -- > 6 -- > 7 -- >
10 Вниз 9 вниз 8 Вниз

Задание №5
Напишите класс, который принимает с клавиатуры два целых числа (для переменных х и y), а затем увеличивает значение х на значение y, а потом – значение y на новое значение х.
Каждый раз, после изменения значения одной из переменных, значения обеих переменных надо выводить на экран.

Задание №6
Напишите класс, который принимает с клавиатуры два целых числа (для переменных х и y), а затем увеличивает значение х на значение y, а потом – значение y на старое(!) значение х.
Каждый раз, после изменения значения одной из переменных, значения обеих переменных надо выводить на экран.

вторник, 25 октября 2011 г.

Задачи Всероссийской олимпиады


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


Задание №1
В школьной олимпиаде по информатике участвовало N учащихся разных классов, мальчиков и девочек. Спонсоры приняли решение наградить самую юную участницу этих соревнований и самого старшего программиста. Требуется найти номер самого старшего участника, среди мальчиков, и номер самой младшей участницы, среди девочек.
Напишите класс, который принимает с клавиатуры значение для переменной N (число участников) и затем генерирует N пар чисел. В каждой паре первое число – возраст участника (от 6 до 20 лет), а второе – "мальчик-девочка" (0=мальчик, 1=девочка).
В качестве итогового результата класс должен выводить на экран номер самого старшего участника (среди мальчиков) и номер самой младшей участницы (среди девочек). Если таких участников несколько, то следует вывести наименьший номер.

Задание №2
Региональный Оргкомитет запланировал встречу прибывающих участников олимпиады. Каждая делегация сообщила время отправления и время в пути к месту проведения олимпиады. Требуется написать программу, которая поможет Оргкомитету определить время прибытия каждой делегации (возможно, в другие сутки).
Напишите класс, который принимает с клавиатуры две пары чисел:
·         Первая – время отправления делегации задается в формате «HH:MM», где HH время в часах, которое принимает значение от 00 до 23, ММ – время в минутах, которое принимает значение от 00 до 59.
·         Вторая – время делегации в пути – количество часов и количество минут. Количество часов не превышает 120, минут – 59.
Класс должен определять время прибытия делегации (в формате "часы и минуты").

Задание №3
В программе проведения олимпиады по информатике был предусмотрен день отдыха для участников. В этот день для участников был разработан маршрут, который включает в себя посещение достопримечательностей города и развлекательный центр. Путь был распланирован с указанием координат каждого посещаемого объекта, отсчитывая начало координат от места проведения. Требуется определить расстояние, которое пройдут участники этой прогулки от места проведения олимпиады, куда они должны и вернуться после ее окончания.
Напишите класс, который принимает с клавиатуры количество объектов на маршруте, а затем генерирует  соответствующее количество координат  – для каждого объекта пара целых чисел из диапазона -10..+10 (первое число в паре=координата Х, второе=координата Y).
Класс должен определить протяженность маршрута (с учетом возврата к месту проведения олимпиады).

Задание №4
Во время проведения олимпиады для руководителей делегаций были организованы лекции выдающихся профессоров известных университетов. Во время лекции известный профессор очень быстро произносил свои лекции, так, что ничего невозможно было разобрать. Один из преподавателей, посетив одну лекцию,  записал всё сказанное на ней на диктофон. Затем, прокручивая дома запись с десятикратным замедлением, он смог записать всё, что сказал профессор.
Но вот незадача – профессор говорил так быстро, что, даже прослушивая замедленную запись, нельзя было точно сказать, где он делал паузы между словами. Таким образом, у учителя есть некоторый текст, состоящий из n маленьких латинских букв – лекция, которая была прочитана профессором. Теперь учитель хочет знать, какое количество различных слов длины m мог использовать в своей лекции профессор.
Напишите класс, который принимает с клавиатуры "длину реч профессора" (количество знаков в речи), а затем – количество знаков в одном слове (переменная m).
Класс должен определять, сколько слов длины m может идти подряд в "речи профессора".

воскресенье, 23 октября 2011 г.

Цифры и числа


Вот сегодня, по дороге из школы домой, под музыку Эллингтона, придумалась такая задача:

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



Кстати, задачу можно дополнить вот так: должно обязательно строиться семизначное число.

А можно – вот так: после построения числа класс должен определять, сколько в нем цифр.

Постройте оба варианта – то есть два класса.

А как построите – попробуйте сил в более сложном варианте, с вот какой разницей: первая цифра в серии – последняя цифра в числе, вторая цифра в серии – предпоследняя цифра в числе, и так далее (то есть число строиться с конца).

Успеха!

четверг, 20 октября 2011 г.

Еще несколько симпатичных задач


К сожалению, из-за всяких форс-мажорных обстоятельств пропало занятие с командой из Салавата – и очень жаль, команда больно толковая.

Попробую компенсировать это несколькими симпатичными задачами.

Как всегда – всегда готовы к общению с вами по поводу ваших решений.

Удачи!


Задание №1
Напишите класс, который принимает с клавиатуры целое положительное пятизначное число и строит из него два новых числа (с сохранением порядка цифр): одно – из четных цифр введенного числа, второе – из нечетных. В случае, если введенное число содержит хоть один ноль – класс должен выводить сообщение Нет решения и не строить описанные два числа.
Например: для числа 32564 следует построить числа 264 и 35, а для числа 46308 – только вывести на экран сообщение Нет решения.

Задание №2
Напишите класс, который принимает с клавиатуры целое положительное число, не превышающее 99999, и строит из него новое число методом "стирания нулей". Например, из числа 307 класс строит число 37, а из числа 24 – снова 24.

Задание №3
Напишите класс, который выводит на экран все двузначные числа и рядом с каждым числом (в скобках) – количество делителей этого числа.

Задание №4
Напишите класс, который принимает с клавиатуры два числа, отвечающие следующим условиям:
Каждое из чисел – двузначное положительное
Первое число представляет собой числитель простой дроби, второе – ее знаменатель
Дробь меньше единицы.
Класс должен проверять, можно ли привести дробь к виду 1/n.
В случае, если введены числа, не соответствующие указанным выше условиям, не следует проводить проверку, а надо вывести на экран сообщение Не те данные.

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

воскресенье, 16 октября 2011 г.

Задача №4

Уважаемые участники пректа!

Задача №4 из предыдущего задания получилась слишком уж сложная, даже просто какая-то нереально сложная.

Надеюсь, д-р Канель опубликует со временем свое решение и свои же соображения по поводу этой задачи -- а пока, ко всем, кто с ней возится: не надо, оставьте. Похоже, что одной только этой задаче надо будет посвятить отдельное сообщение.

Ваш ВМФ

среда, 12 октября 2011 г.

Очередная порция задач (циклы, случайные числа)


Сегодня прошло очень приятное и интересное занятие с группой из Салавата. Несмотря на каникулы и на то, что частью уехала в Москву готовиться к одной из предметных олимпиад (ах, какие молодцы!), остальные пришли на занятие. Браво!
Мы позанимались сегодня двумя очень сложными задачами – и с хорошим результатом: не в том смысле, что мы разобрались с конкретными задачами, а в том смысле, что еще и поговорили о важных вещах в смысле подхода к решениям.




Поскольку каникулы – задач будет сегодня немного:
Три первых – на генерацию случайных чисел (или – ввод данных с клавиатуры) и использование счетчиков
Остальные – на всякие математические хитрости)))
Успеха!

Задание №1
Права на вождение мопеда можно получить с 14 лет, на вождение мотоцикла – с 16 лет, на вождение автомобиля – с 18 лет.
Напишите класс, который генерирует тройки чисел из набора 0-1 (0=нет права на вождение данного вида, 1-есть право) – какими видами транспорта данный водитель имеет право управлять.

Класс должен тестировать 20 человек и определять:
Количество владельцев прав каждого вида
Количество граждан, не имеющих никаких прав вообще
Возраст (или возрастной диапазон) каждого водителя (предположительно)
Задание №2
Напишите класс, работающий "наоборот" по отношению к предыдущему –  принимает (генерирует?) данные (возраст) 20 человек и определяет:
Сколько из них имеют права на вождение мопеда (в принципе)
Сколько из них имеют права на вождение мотоцикла (в принципе)
Сколько из них имеют права на вождение автомобиля (в принципе)
Сколько из них в принципе не имеют право на вождение никакого вида транспорта

Задание №3
Напишите класс, который генерирует серию из 20 случайных двузначных чисел и определяет:
Сколько раз повторяется в серии первое число
В каких позициях (местах) повторяется первое число
Сколько других чисел встречается между парой чисел, равных первом

Задача №4
Напишите класс, который принимает с клавиатуры число N и определяет, какая цифра стоит на N месте в серии целых положительных чисел.
Например: если N=26, то это цифра 7 (серия=01234567891011121314151617)

Задача №5
Напишите класс, который принимает с клавиатуры целое положительное число и определяет два целых числа, между которыми расположен корень из введенного с клавиатуры числа – или целое число, равное корню квадратному из введенного с клавиатуры числа.
Примечание: не использовать операцию вычисления квадратного корня.

Задача №6
В математике "плоскими" называются числа, которые можно представить в виде произведения только двух сомножителей.
Напишите класс, который принимает с клавиатуры целое положительное число и проверяет, является ли оно "плоским".
Измените класс так, чтобы он выводил на экран все "плоские" двузначные числа.

Задача №7
Назовем "уникальным" трехзначное число, для которого выполняются (одновременно) следующие правила:
В "перевернутом" виде оно не равно самому себе (121 – не годится)
Не содержит двух нулей подряд (300 – не годится)
Корень квадратный из произведения числа на число с обратным порядком цифр – тоже целое число.
Напишите класс, который принимает с клавиатуры целое положительное число и проверяет, является ли оно "уникальным".
Измените класс так, чтобы он выводил на экран все "уникальные" трехзначные числа.
Примечание: не использовать операцию вычисления квадратного корня.

суббота, 8 октября 2011 г.

Видеоролик: ввод данных с клавиатуры

Уважаемые коллеги, а также ученики и ученицы!
Выкладываю небольшой видеоролик, который, скорее всего, для большинства уже не очень актуален. Посему мне в первую очередь интересно знать -- вашу оценку и любые комментарии.
Прошу прощения за иногда застревающее изображение: делал на нетбуке -- видимо, памяти маловато на нем для записи таких сюжетов, надо использовать более мощную машину.


пятница, 7 октября 2011 г.

Еще одна задача на случайные числа


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


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



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

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

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

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

Добавьте в класс блок команд, который будет определять количество "подъемов" на маршруте.

Добавьте в класс блок команд, который будет определять количество "спусков" на маршруте.

Назовем "длиной подъема" количество точек, которое он включает в себя.

Добавьте в класс блок команд, который будет определять длину каждого подъема.

Доброжелательный))) намек: особое внимание уделите началу и концу маршрута…

вторник, 4 октября 2011 г.

С Днём Учителя!

Дорогие коллеги!
С праздником Вас! Удачи, успеха, здоровья, удовлетворенности от работы -- и зарплаты)))

Задачи на цикл for и случайные числа -- очень разные


Предлагаю еще несколько задач на использование цикла for и случайные числа – в этот раз задачи все разного уровня сложности.

Задание №1
Напиши класс, который принимает с клавиатуры два целых числа (Х и N) – и генерирует серию из 16 случайных чисел, отличающихся по значению от Х не более, чем на N.

Задание №2
Напиши класс, который принимает с клавиатуры два целых числа (Х и N) – и генерирует серию из 16 случайных чисел, отличающихся по значению от Х не более, чем на N. Кроме того, должно быть соблюдено дополнительное условие: первая половина серии должна состоять из чисел, больших Х, а вторая – из чисел, меньших Х.

Задание №3
Напиши класс, который принимает с клавиатуры два целых числа (Х и N) – и генерирует серию из 16 случайных чисел, отличающихся по значению от Х не более, чем на N. Кроме того, должно быть соблюдено дополнительное условие: числа в серии должны идти "зигзагом" по отношению к Х – то есть первое число в серии должно быть больше Х, второе – меньше, третье – снова больше, четвертое – снова меньше, и так далее.

Задание №4
Напиши класс, который принимает с клавиатуры два целых числа (Х и N) – и генерирует серию из 16 случайных чисел, отличающихся по значению от Х не более, чем на N. Кроме того, должны быть соблюдены два дополнительных условия:
1.      числа в серии должны идти "зигзагом" по отношению к Х – то есть первое число в серии должно быть больше Х, второе – меньше, третье – снова больше, четвертое – снова меньше, и так далее;
2.      числа, большие Х, должны быть четными, а те, которые меньше Х – нечетными.

Задание №5
Напиши класс, который принимает с клавиатуры два целых числа (Х и N) – и генерирует серию из 16 случайных чисел, отличающихся по значению от Х не более, чем на N. Кроме того, должны быть соблюдены три дополнительных условия:
1.      числа в серии должны идти "зигзагом" по отношению к Х – то есть первое число в серии должно быть больше Х, второе – меньше, третье – снова больше, четвертое – снова меньше, и так далее;
2.      числа, большие Х, должны быть четными, а те, которые меньше Х – нечетными;
3.      числа, большие Х, должны представлять неубывающую серию, а числа, меньшие Х, должны представлять невозрастающую серию.

Честно говоря, все задачи я придумал прямо вот тут на ходу – и, кажется, получились какие-то зубодробительные… Так что добавляю несколько нормальных…

Задание №6
Напиши класс, который генерирует серию из 20 случайных целых положительных двузначных чисел и проверяет, сколько раз в серии встречаются такие пары соседних чисел, в которых оба числа – четные.

Задание №7
Напиши класс, который генерирует серию из 20 случайных целых положительных двузначных чисел и проверяет, какие пары соседних чисел в серии встречаются чаще: те, в которых оба числа – четные, или такие, в которых оба числа – нечетные.

Задание №8
Назовем "связной цепочкой" три соседних числа (в серии двузначных положительных случайных чисел), для которых выполняется следующее условие: последняя цифра первого числа равна первой цифре второго числа, а также первая цифра третьего числа равна второй цифре второго числа (как, например – 34 47 71).
Напиши класс, который принимает с клавиатуры целое положительное число N и генерирует серию из N двузначных положительных чисел – и проверяет:
1.      сколько в серии было "связных цепочек";
2.      каким было самое большое число из всех, относящихся к "связным цепочкам";
3.       в какой по порядку "связной цепочке" встречалось самое большое число.
Примечание: можно представить несколько вариантов этого задания – сначала такое, которые содержит решение только первого пункта, затем – с решением первого и второго пунктов, потом – полный вариант.


суббота, 1 октября 2011 г.

Задачи на случайные числа – сложные!


Эти задачи придуманы нами в процессе преподавания – и скажу сразу, это задачи очень непростые, потому что они и придумывались для тех, кто простые и средней сложности задачи решает уверенно.

Общее примечание: можно генерировать числа не напрямую, а с помощью дополнительных действий.





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

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

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

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

Задание №5
Напиши класс, который генерирует и выводит на экран серию из 15 случайных двузначных чисел, ни в одно из которых не встречается цифра 7.

Гимназия №2, г. Салават, Башкортостан

Группа учеников из школы "Гимназия №2", г.Салават, подключилась к нашему проекту буквально в конце лета, по инициативе завуча школы, Галины Петровны Злобиной, а руководит группой учитель информатики Басырова Азалия Ришатовна.

Группа очень активная, старательная и успешная, работать с ними (уроки наши проходят раз в неделю, через Интернет -- кажется, теперь такие вещи называют вебинарами) -- одно удовольствие.

Сегодня -- фотогалерея группы. Знакомьтесь.
Денис Фейчук

Воронов Саша

Дементьев Данил

Егоров Максим

Ибрагимов Дамир

Карпов Максим

Митрохин Петр

Панова Анна

Сагдиев Руслан

Стрелец Игорь и Мухаметшин Радмир

Сулейманов Денис