вторник, 31 января 2012 г.

Массив массивов: длинная-длинная задача…

Как мы и договорились сегодня с группой из Салавата – публикую одну, но "многометодную" задачу.

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



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

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

Кроме того, класс должен определять, какое из значений в "счастливых" ячейках встречается чаще всего.

Разумеется, размеры массива и его содержание можно задавать по-разному: можно – через ввод параметров с клавиатуры (гибко), можно ­– заранее устанавливать значения… Выбирайте сами.

Я советую писать класс "по частям": проверять каждый этап и использовать как можно больше методов.

Удачи!

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

Вебинар, встреча №2

Коллеги-учителя!
Завтра -- вебинар, то есть видеоконференция, в 16:30 по московскому, будем говорить про таблицы трассировки, они же таблицы ручной прокрутки.

Экзамен 2008-го года, третья часть

Я хочу обновить тут две последних задачи из экзамена за 2008-й год, на аттестат зрелости (первый год обучения): там как раз и методы, и массивы, и массив массивов ("двумерный").


Как раз хватит голову поломать)))






Задача №9
Значение, находящееся в одной из ячеек двумерного массива, называется перекрестком, если сумма всех значений в столбце, в котором находится это значение-перекресток, равно сумме всех значений в строке, в которой находится значение-перекресток.

Например, для массива

-4
0
7
14
-3
10
-2
11
9
2
1
8
6
0
10
-7
4
9
2
15
2
3
-1
5
0

Выделенное значение (9) является перекрестком.
  1. Напиши метод, которые получает в качестве параметра массив размером 17Х17, содержащий целые числа, и два целых числа, указывающих ячейку в этом массиве (номер строки и номер столбца). Метод должен проверять, является ли значение в указанной ячейке массива перекрестком и возвращает 1, если это действительно так, в противном случае метод возвращает 0.
  2. Напиши класс, который определяет, какое количество перекрестков содержится в массиве размером 17Х17 – и выводит итог проверки на экран. Обязательно использовать метод, написанные для пункта 1.

Задача №10
  1. Напиши метод с именем elapsedTime и следующими условиями входа и выхода:
·         Условие входа – два целых четырехзначных числа в переменных first и second, каждое из которые представляет момент времени в промежутке от 12:00 до 23:59. Две первых цифры каждого числа – час, две последних – минуты: нгапример, число 1354 представляет время 13:45. Можно считать заранее известным, что значение переменной first меньше значения переменной srcond.
·         Условие выхода – промежуток времени между first и second в минутах.
  1. В отборочных соревнованиях на право участия в марафоне стартовали 127 спортсменов. Каждый из участников начал забег после 12:00, и закончил до 23:59.
Напиши класс, который принимает с клавиатуры для каждого участника два параметра: время старта участника и время его финиша. Класс должен использовать метод elapsedTime из пункта 1 и вывести на экран результат забега участника.
Класс также должен определять лучшее время забега и выводить его на экран.

среда, 25 января 2012 г.

Массив массивов


В языке Java не совсем правильно пользоваться термином "двумерный массив", потому что такая конструкция в Java совершенно не обязательно "прямоугольная". Так что гораздо правильнее использовать термин "массив массивов", то есть массив, каждая ячейка которого содержит массив.
Разумеется, для таких элементов использование методов становится еще более актуальным – и для начала предлагаю несколько не очень сложных задач.

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

Задание №2
Сделайте все, как в предыдущей задаче, а затем для каждого "внутреннего" массива найдите сумму его значений, и укажите ее при построчной выводе массивов на экран.

Задание №3
И снова повторите создание и заполнение массива массивов, а затем для каждого "внутреннего" массива найдите максимальное значение, которое, разумеется, тоже надо вывести на экран – рядом с построчным выводом "внутренних" массивов.

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

воскресенье, 22 января 2012 г.

Методы: не только с массивами


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

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

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

Задание №3
Напишите класс, который генерирует серию из 20 случайных чисел из диапазона от 1 до 100000 и для каждого числа строит новое число - с обратным порядком цифр.
Для каждой пары ("старое" число и "новое" число) следует определить количество одинаковых цифр, стоящих на одинаковых местах.
Например, для "старого" числа 72825 должно быть создано "новое" число 52827, и в них есть две цифры (2), стоящие на одинаковых местах (втором и четвертом).
Класс должен выводить на экран для каждого числа в серии и его новое число, и результат сравнения цифр.


вторник, 10 января 2012 г.

Задачи на массивы: с методами, но можно и без


Я догадываюсь, что эти задачи вы увидите уже только завтра: уж если у нас дело к ночи, то у вас-то уж совсем… 
Но, честное слово, раньше было никак не успеть.

Задачи можно делать с использованием методов (это самое правильное), а можно, конечно и без методов, со всеми действиями в главном методе. Во втором варианте эти задачи позже можно будет использовать для того, чтобы разобраться, как блоки из главного метода выносятся в отдельные методы и как эти методы вызываются из главного.

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

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

Задание №3
Назовем "весами" массив, в котором имеется только одна единственная "точка баланса".

Задание №4
Назовем массив "идеальными весами", если он:
1.      Соответствует определению "весы" из задания №3
2.      Значение в ячейке, которая является "точкой баланса", является делителем для суммы значений всего массива.
Напишите класс, который сначала заполняет массив значениями (как в задании №1), а затем проверяет, является ли этот массив "идеальными весами".

Уф-ф-ф-ф-ф… это все… )))
Удачи!

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

Новый год, новые задачи)))


Праздник, каникулы – это замечательно. Лыжи, дискотеки, просто дома побыть – прекрасно.
Но для тех, кто все же захочет в эти дни "потратить" время на задачи – несколько штук, для "незасыхания мозгов".
Команда из Пензы может решать их в виде "обычных" классов, а команда из Салавата – с использованием методов.
Все задачи – на массивы.
Успеха!


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

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

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

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