CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Решить задачу раз плюнуть

Олег ДАНИЛЮК lezha@ua.fm

Окончание, начало см. в МК № 3, 8, 16, 27, 29, 31, 35 (226, 231, 239, 250, 252, 254, 258).

На этот раз обойдемся без вступления, чтобы решить больше задач :-).

Проверим домашнее задание:

Задача №30

Составить программу вывода на экран N-го символа заданного текста.

Совсем легкая задача. Решение заняло у меня три строки (вся программа — десять). Приложение выводит на экран символ, который находится на N-ом месте в тексте.

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

Задача №31

Составить программу, которая позволяет из любого натурального числа N получить «перевернутое» число, и подсчитать сумму цифр этого числа.

Перевернутым числом называют число, в котором цифры идут в обратном порядке. Например, N=123456789, перевернутое число — 987654321.

Главная проблема, которая встает при решении данной задачи — незнание количества цифр в числе N. Я решил ее достаточно просто: в первом цикле переменная i принимает значения не от 1 до 9, а наоборот, от 9 до 1. Что это дает? Если, например, N=1234, то есть состоит из четырех цифр, то при i=9,8,7,6,5 элементам массива ar1[i] присваивается значение 0. В итоге перевернутое число будет равняться 000004321, что соответствует числу 4321.

Кстати, если вы заметили, я написал n div k вместо привычного Trunc(n/k). Результат получаем тот же, но при этом генерируется более оптимальный код.

Задача №32

Проходят соревнования по прыжкам в длину. D спортсменов выполняют по С попыток. Заполнить двухмерный массив размерностью DC случайными числами от 1 до 10, выполнив округление до десятых. Отпечатать элементы массива в виде матрицы. Определить лучшую попытку каждого спортсмена, создав при этом линейный массив. Отпечатать элементы массива в строку. Определить чемпиона по прыжкам в длину и вывести на печать его (их) результаты.

Уточню: в последней фразе подразумевается, что нужно показать все попытки чемпиона.

Задача №33

С клавиатуры вводится действительное (читай: любое) число. Определить знак числа (положительное, отрицательное, равное нулю). Проверить, целое ли это число; если целое, то установить его парность или непарность; если оно целое и неотрицательное, то проверить, будет ли оно полным квадратом.

Задача №34

«Раджа и шахматы». Когда-то один богатый раджа проиграл мудрецу в шахматы. Он согласился расплатиться рисовым зерном в таком количестве: на первую клетку шахматной доски кладется 1 зерно; на вторую — 2 зерен; на третью — 4 и так далее; на последнюю шестьдесят четвертую кладется 263 зерен. Эта схема показалась радже очень выгодной, но всего зерна, которое у него было, хватило лишь на половину доски. Вычислить общее количество зерен, проигранных раджой. Учитывая, что одна рисовая зернина весит приблизительно 1 карат = 0.2 грамма, подсчитать массу проигранного зерна. Принимая, что средняя грузоподъемность одного железнодорожного вагона-зерновоза равна 70 тоннам, вычислить количество вагонов проигранного зерна. Принимая среднюю длину железнодорожного вагона равной 20 метров, установить длину эшелона для перевозки проигранного зерна.

Честно говоря, я и не подозревал, как много зерна выиграл мудрец, пока не решил задачу :-). Как вы уже догадались, типы Integer и LongInt в этой задаче использовать не получится.

Задача №35

Натуральные числа записаны в виде таблицы (Табл. 1). Написать программу, которая выводит на экран число N (вводится с клавиатуры) и числа данной таблицы, которые его окружают (примеры: Табл. 2, 3).

Таблица 1   Таблица 2

Таблица 3

Первым делом у вас должен возникнуть вопрос: как получить первую таблицу? Понятно, что это будет двумерный массив, просто нужно придумать алгоритм заполнения. Конечно, фанатики могут заполнить массив вручную :-), но лучше, чтобы это делалось автоматически. В данном случае надо заполнять массив не по строкам, а по столбцам, то есть сначала элемент [1,1], потом [2,1], [3,1] и так далее. Зачем? Как видите, при таком методе перебора элементов каждая последующая ячейка таблицы (не считая пустых) будет на единицу больше предыдущей. Остается только узнать, где пусто, а где стоит циферка. Наша таблица из цифр представляет собой пирамиду, положенную набок. Причем цифры располагаются посредине столбца. Эту особенность я и использовал в своем решении. В первом столбце снизу и сверху от единицы располагается по 11 пустых ячеек (в моем решении), во втором уже по 10, то есть вместо двух пустых ячеек появились два числа, и так далее.

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

Кстати, заметьте, что я объявил массив размерностью 2413, но заполнил только 2312 элементов. Это сделано затем, чтобы, например, при N=144 (число в двенадцатом столбце) получить правильный результат. Иначе справа от числа будут не знаки -, а совершенно «левые» числа.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov