|
Программирование >> Разработка устойчивых систем
Matrix&) для вывода матрицы. Создайте следующие бинарные операторные функции, по возможности используя объекты функций STL: operator+(const Matrix&,const Matrix&) для сложения матриц, operator*(const Matrix&,const vector<int>&) для умножения матрицы на вектор, operator*(const Matrix&,const MatrixS) для умножения матриц (если вы забыли, как выполняются эти операции, посмотрите в учебнике). Протестируйте щаблон Matrix для типов int и float. 20. Постройте щифр из символов -!(а#$Г&*() -+=}{[]\: : <.>.?/ . Входной файл, имя которого передается в командной строке, используется как словарь. Не обращайте внимания на неалфавитные символы и на регистр слов в файле. Каждому слову должна соответствовать уникальная перестановка символов щифра: = )/X[}] I {*@?! \ :>Г-~ : $+.#(<\ applе ]\~>#.+Х(/- [ : :=}{* $ !&?).(а< carrot (а=-[ ].\/<->#*) Х+. :&?! {: I$}( Carrot Проследите за тем, чтобы в шифре не было одинаковых кодов или слов. Для сортировки шифров используйте алгоритм lexicographical compare(). Зашифруйте исходный файл словаря, затем расшифруйте его и убедитесь, что вы получаете тот же текст. 21. Имеется список имен: Jon Brittle Jane Brittle Mike Brittle Sharon Brittle George Jensen Evelyn Jensen Постройте все возможные комбинации разнополых пар. 22. Используя данные предыдущего упражнения, найдите все возможные комбинации разнополых пар, при которых Jon Brittle и Jane Brittle будут находиться в одной паре. 23. Транспортная компания хочет узнать среднюю продолжительность пересечения континента. Проблема состоит в том, что некоторые путешественники совершали пересадки, и дорога заняла у них гораздо больше времени, чем обычно. Используя приведенный ниже генератор, заполните вектор со статистическими данными. Удалите из вектора все аномальные маршруты при помощи алгоритма remove if(). Вычислите среднее арифметическое элементов вектора и определите, сколько времени в среднем занимает путь. int travelTimeO { Аномальный маршрут ifCrandO % 10 == 0) return randO % 100: Обычный маршрут return randO X 10 + 10: 24. Определите, насколько алгоритм binary search() превосходит по быстродействию алгоритм find() при поиске в отсортированных интервалах. 25. В армию набираются на сборы военнослужащие запаса. Рещено в первую очередь призвать тех, кто уходил на службу в 1997 году, от младщих к старшим. Сгенерируйте вектор со случайным списком людей (определите в классе переменные, содержащие возраст и год призыва). Произведите разбиение вектора так, чтобы все призванные в 1997 году были сгруппированы в начале списка от младших к старшим. Остальная часть списка должна быть отсортирована по возрасту. 26. Создайте класс Town с информацией о городе: население, высота над уровнем моря, погодные условия (перечисляемый тип {RAINY,SNOWY,CLOUDY,CLEAR}). Создайте класс, генерирующий объекты Town. Сгенерируйте названия городов (пусть даже это будут бессмысленные последовательности символов) или найдите подходящий список в Интернете. Проследите за тем, чтобы названия были записаны в нижнем регистре, а список не содержал повторяющихся названий. Создайте генератор, который будет случайным образом генерировать погодные условия, численность населения в интервале [100, 1000000) и высоту над уровнем моря (в футах) в интервале [0,8000). Заполните вектор объектами Town, запишите его в новый файл с именем Towns.txt. 27. В результате демографического взрыва население во всех городах увеличилось на 10 %. Обновите данные городов алгоритмом transform() и запишите данные обратно в файл. 28. Найдите города с наибольшим и наименьшим населением. Для этого определите в классе Town оператор <. Также реализуйте функцию, которая бы возвращала true, если первый параметр меньше второго. Используйте ее в качестве предиката выбранного алгоритма. 29. Найдите все города, расположенные на высоте 2500-3500 футов над уровнем моря включительно. Реализуйте в классе Town необходимые операторы сравнения. 30. Упорядочьте список городов по высоте над уровнем моря так, чтобы в нем не было дубликатов (то есть двух городов, различающихся по высоте менее чем на 100 футов). Отсортируйте список по возрастанию минимум двумя разными способами, используя объекты <functional>. Сделайте то же самое для сортировки по убыванию. Реализуйте необходимые операторы сравнения для объектов Town. 31. Сгенерируйте произвольное количество случайных чисел в массиве. Найдите наибольший элемент массива при помощи алгоритма max element(), поменяйте его местами с последним элементом массива. Найдите следующее по величине число и поместите его в предпоследнюю позицию. Продолжайте до тех пор, пока не будут перемещены все элементы. После завершения работы алгоритма вы получите отсортированный массив (это называется сортировка методом выбора ). 32. Напишите программу, которая читает номера телефонов из файла (также содержащего имена и другие сведения) и заменяет префикс 222 на 863. Старые номера также следует сохранить. Номера хранятся в следующем формате: 222 8945 756 3920 222 8432 ИТ. д. 33. Напишите программу, которая находит в списке всех абонентов с заданной фамилией при помощи интервальных алгоритмов lower bound, upper bound и equaLrange. Отсортируйте список по фамилии (первичный ключ) и имени (вторичный ключ). Предполагается, что имена и номера телефонов читаются из файла следующего формата: Jonn Doe 345 9483 Nick Bonham 349 2930 Jane Doe 283 2819 34. Имеется файл с сокращенными и полными названиями американских штатов: ALABAMA ALASKA ARIZONA ARKANSAS CALIFORNIA CO COLORADO ИТ. д. Выделите все сокращения и запишите их в отдельный файл (учтите, что тип данных не определяется номером строки; полное и сокращенное название могут следовать в любом порядке). 35. Создайте класс Employee, представляющий работника, с двумя переменными: hours (количество отработанных часов) и hourlyPay (почасовая оплата). В loiacce также определяется функция calcSalary(), возвращающая суммарный заработок данного работника. Сгенерируйте случайные значения hours и hourlyPay для произвольного количества работников, сохраните эти данные в контейнере vector<Employee*>. Вычислите суммарные расходы компании на оплату труда за данный период. 36. Проведите сравнительный хронометраж алгоритмов sort(), partial sort() и nth element(). Оправдывает ли экономия времени применение более слабой сортировки, если вам не требуется большего?
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |