КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Примеры и решения
Программирования
1. Рассмотрим алгоритм обработки двумерного массива. Аналогом двумерного массива в математике является матрица. Общий вид матрицы А размерности М х N следующий: Для матрицы размерностью N * N (квадратной матрицы) определены понятия главной и побочной диагоналей. Элементы главной диагонали —, а элементы побочной диагонали — Пусть необходимо построить матрицу, элемент которой а# вычисляется как (i + У)2, а затем зеркально отобразить ее относительно главной диагонали. Элементам главной диагонали при этом присвоить значение 0. Для решения поставленной задачи воспользуемся структурой данных — двумерный массив целых чисел. На первом этапе построим вложенный цикл расчета элементов и заполнения массива. На втором этапе проведем «зеркальное отражение» элементов, находящихся под главной диагональю. И, наконец, на третьем этапе обнулим элементы главной диагонали. Блок-схема алгоритма приведена на рис. (N — размерность массива, I и J — индексы). 2. Рассмотрим задачу, решение которой основано на преобразовании типов данных. Пусть необходимо построить алгоритм сложения очень больших целых чисел, для представления которых не подходит тип данных INTEGER, имеющий ограничения на максимально возможные хранимые значения. Используем для ввода в алгоритм сложения символьные представления чисел, т.е. рассмотрим каждое число как последовательность символов (например, А = «1234567890» и В = «98765432199»). Для каждого числа посчитаем длину его символьного представления (N — длина числа А, М — длина числа В) и присвоим некоторой переменной L значение максимальной длины. Следующим шагом разместим 3 массива байтов размерностью L + 1 (такова будет максимальная длина в символах полученного результата) и заполним их элементы числовым значением 0. В первый и второй массивы перешлем (начиная с конца) посимвольно числа А и В, преобразуя каждый символ в числовое представление (в соответствии с таблицей ASCII, это можно сделать, например, вычтя из числового значения кода цифры значение кода символа «0»). При этом в первом и втором массивах получим так называемые двоично-десятичные представления чисел (т.е. когда каждый разряд десятичного числа представляется двоичной комбинацией):
Теперь, складывая побайтно (от элемента с номером L+1 до элемента с номером 1) числовые значения в массивах А и В и помещая результат в соответствующий байт массива С, получим двоично-десятичный результат сложения двух чисел:
Перенос разряда при сложении может быть осуществлен так, как показано на блок-схеме (рис. 1.В). Последним шагом решения задачи должно быть преобразование С из двоично-десятичного представления в символьное для вывода результата.
3. Пусть требуется посчитать количество слов в некоторой последовательности символов. Определим слово как часть последовательности (ненулевой длины), ограниченную с двух сторон (либо только справа или слева) символом «пробел». Для решения задачи разместим обрабатываемую последовательность в массиве символов размерностью N (где N — длина последовательности). При построении алгоритма необходимо учесть, что последовательность может начинаться или заканчиваться пробелами и может встречаться несколько пробелов подряд. Блок-схема алгоритма приведена на рис. l.C (L — длина очередного слова, NW — количество слов в последовательности, знак пробела обозначен как «__»). Вопросы и задания 1. Какое максимальное (минимальное) целое значение без знака (со знаком) можно записать в 12 битов? 2. Сколько байтов потребуется для записи Вашей фамилии, имени и отчества? Рис. 1.С 3. Сколько записей «Информация о студенте» можно разместить в 1 мегабайте памяти? 4. Охарактеризуйте различные способы представления числовой информации. 5. Охарактеризуйте разницу между простым и структурированным типом данных. 6. Изобразите в виде блок-схемы алгоритм нахождения максимального (минимального) элемента в двумерном массиве. 7. Постройте алгоритм зеркального отображения элементов двумерного массива размерностью N х N относительно побочной диагонали. 8. Постройте алгоритм формирования одномерного массива, каждый элемент которого представляет собой сумму элементов строки некоторого двумерного массива. 9. Постройте алгоритм вычитания больших целых чисел. Постройте алгоритм ввода данных в структуру «Информация о студенте». 10. Опишите в виде массива записей информацию о студентах группы и постройте алгоритм подсчета среднего возраста студентов.
Дата добавления: 2014-01-07; Просмотров: 1014; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |