Окончание, начало см. в МК № 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,1], потом [2,1], [3,1] и так далее. Зачем? Как видите, при таком методе перебора элементов каждая последующая ячейка таблицы (не считая пустых) будет на единицу больше предыдущей. Остается только узнать, где пусто, а где стоит циферка. Наша таблица из цифр представляет собой пирамиду, положенную набок. Причем цифры располагаются посредине столбца. Эту особенность я и использовал в своем решении. В первом столбце снизу и сверху от единицы располагается по 11 пустых ячеек (в моем решении), во втором уже по 10, то есть вместо двух пустых ячеек появились два числа, и так далее.
Решение задачи можно условно поделить на три части: заполнение таблицы (массива), вывод ее на экран, печать числа N и окружающих его чисел.
Кстати, заметьте, что я объявил массив размерностью 2413, но заполнил только 2312 элементов. Это сделано затем, чтобы, например, при N=144 (число в двенадцатом столбце) получить правильный результат. Иначе справа от числа будут не знаки -, а совершенно «левые» числа.