Задания к работе №1 по фундаментальным алгоритмам (2022-2023 уч. г.).
- Через аргументы командной строки пользователь вводит целое положительное число и флаг, определяющий действие с этим числом. Флаг начинается с символа “-” или “/”. Программа распознаёт следующие флаги: i) -h вывести в консоль числа в пределах 100, кратные введённому. Если таковых нету – вывести соответствующее сообщение; ii) -p определить, является ли введённое число простым или составным; iii)-s разделяет число на отдельные цифры и выводит отдельно каждую цифру, разделяя их пробелом; iv) -e вывести в консоль числа от 1 до 10, возводя их во все степени от 1 до заданного числа (для этого флага работает ограничение на вводимое число: оно должно быть не больше 10); v) -a суммирует все числа от 1 до указанного числа включительно; vi) -f вычисляет факториал введенного числа.
- Через аргументы командной строки в программу подается флаг, который определяет действие, и набор чисел. Флаг начинается с символа “-” или “/”. Необходимо проверять соответствие количества параметров введенному флагу. Программа распознаёт следующие флаги: i) -q вводимые три параметра являются коэффициентами квадратного уравнения, необходимо вывести решения этого уравнения при всевозможных значениях параметров; ii) -m необходимо задать два ненулевых целых числа, после чего определить, кратно ли первое число второму; iii)-t считывает 3 ненулевых значения и проверяет, могут ли они быть сторонами прямоугольного треугольника.
- На вход программе, через аргументы командной строки, подается флаг и путь к файлу. Флаг определяет действие с входным файлом. Флаг начинается с символа “-” или “/”. Если флаг содержит символ “n” (то есть nd, ni, ns, na), то результат сохраняется в файл, имя которого является третьим аргументом. Если этого аргумента нет, то имя выходного файла генерируется приписыванием к имени входного файла префикса “out_”. Программа распознает следующие флаги: i) -d необходимо исключить символы цифр из файла; ii) -i необходимо в выходной файл написать, сколько раз в каждой строке встречаются символы букв; iii)-s необходимо в выходной файл написать, сколько раз в каждой строке встречаются символы, отличные от символов цифр, символов букв и символа пробела; iv) -a необходимо заменить символы, отличные от цифр, их строковым представлением ASCII-кода; v) -f создать выходной файл таким образом, чтобы в каждой в каждой второй лексеме все буквы были переписаны в строчные, а также в каждой пятой лексеме все символы были заменены на эквивалентные им ASCII-коды.
- Дан файл, содержащий некоторую информацию, которая представлена в трех столбцах (каждая строка файла содержит три лексемы). Необходимо перезаписать этот файл таким образом, чтобы первый столбец стоял на месте второго, второй – на месте третьего, а третий – на месте первого.
- На вход программе подается 𝑁 файлов. Способ передачи этих файлов определяется аргументом командной строки: i) -fi <file_name> в текстовом файле с указанным именем содержится список имен файлов с исходными данными; ii) -сin список файлов необходимо считать из стандартного потока ввода, то есть имена файлов, в которых содержатся данные, вводит пользователь; iii)-arg все имена файлов передаются через аргументы командной строки. Из полученных файлов ваша программа должна создать новый файл, в который записываются поочерёдно символы из переданных файлов.
- В текстовом файле находятся числа, записанные в разных системах счисления, при этом информация о конкретной системе счисления для каждого числа утеряна. В файле числа разделены произвольным количеством разделителей (разделителями могут являться символы пробела, табуляции, переноса строки). Напишете программу, которая для каждого числа определяет минимальную систему счисления, в которой представление этого числа корректно, и в выходной файл выводит число, определённую для него систему счисления и представление этого числа в десятичной системе счисления.
- Заполнить массив фиксированного размера случайными числами. Реализовать поиск максимального и минимального элементов, поменять местами максимальный и минимальный элементы массива.
- Из файла считывается числовой массив, размерность которого не превосходит 128 элементов. В зависимости от выбора пользователя перепишите в новый массив: a) числа, стоящие на нечётных позициях; b) чётные числа; c) для текущего элемента: наиболее далёкое (по значению) от него значение из этого же массива; d) для текущего элемента: сумму элементов, которые ему предшествуют; e) для текущего элемента: сумму элементов, которые меньше него. Значение индекса текущего элемента для пунктов c-e должно быть получено из стандартного потока ввода.
- Пользователь вводит систему счисления (в диапазоне [2..36]) и затем числа в этой системе счисления. Окончанием ввода является ввод лексемы “Stop”. Найдите среди введённых чисел максимальное по модулю. Выведите на консоль значение найденного максимального по модулю числа в системах счисления с основаниями 9, 18, 27, 36.
- Реализуйте следующий функционал: a) Реализуйте функцию генерации матрицы произвольных размеров (диапазон числа строк/столбцов: [1..10]) с произвольными значениями (диапазон значений элементов: [-100..100]). Функцию необходимо реализовать таким образом, чтобы в контексте её вызова была возможность корректного освобождения динамической памяти. b) Реализуйте функцию умножения матриц и выведите результат умножения двух сгенерированных матриц в стандартный поток вывода. c) Реализуйте функцию нахождения определителя матрицы и выведите значения определителей матриц, сгенерированных в пункте b). В случае, если операция невозможна, то необходимо вывести сообщение об ошибке. При завершении работы программы необходимо корректно освободить всю выделенную динамическую память.