Задачи

 

1.      Написать программу на языке С, которая в изображении, заданном в файле /users/staff/staroverov/lectures/images/1.bmp (изображение с палитрой) заменяет все пиксели с красным цветом, имеющие синих соседей, на пиксели с зеленым цветом. Предполагается, что указанные цвета в палитре есть. Результат вывести в файл ./1.bmp. Заголовок BMP-файла можно взять из файла /users/staff/staroverov/lectures/images/header/bmp.h  .

2.      Написать программу на языке С, которая транспонирует матрицу изображения, заданного в файле /users/staff/staroverov/lectures/images/1.bmp (изображение с палитрой). Результат вывести в файл ./1.bmp. Заголовок BMP-файла можно взять из файла /users/staff/staroverov/lectures/images/header/bmp.h  .

3.      Написать программу на языке С, которая транспонирует матрицу изображения, заданного в файле /users/staff/staroverov/lectures/images/32.bmp (изображение в формате True Color). Результат вывести в файл ./32.bmp. Заголовок BMP-файла можно взять из файла /users/staff/staroverov/lectures/images/header/bmp.h  .

4.      Написать программу на языке С, которая погружает изображения, заданное в файле /users/staff/staroverov/lectures/images/1.bmp (изображение с палитрой), в черную рамку шириной 2 пикселя. При этом ширина и высота изображения должны увеличиться, соответственно, на 4 пикселя. Результат вывести в файл ./1.bmp. Заголовок BMP-файла можно взять из файла /users/staff/staroverov/lectures/images/header/bmp.h  .

5.      Написать программу на языке С, которая погружает изображения, заданное в файле /users/staff/staroverov/lectures/images/32.bmp (изображение в формате True Color), в черную рамку шириной 2 пикселя. При этом ширина и высота изображения должны увеличиться, соответственно, на 4 пикселя. Результат вывести в файл ./32.bmp. Заголовок BMP-файла можно взять из файла /users/staff/staroverov/lectures/images/header/bmp.h  .

6.      Написать программу на языке С, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t0.txt в массив строк (строки длиной не более 256 символов), лексикографически сортирует массив строк методом быстрой сортировки делением пополам с рекурсией (требуется собственная реализация) и выводит полученный массив в файл ./t0.txt по одной строке в строку файла.

7.      Написать программу на языке С, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t0.txt в массив строк (строки длиной не более 256 символов), лексикографически сортирует массив строк методом быстрой сортировки делением пополам без рекурсии (требуется собственная реализация) и выводит полученный массив в файл ./t0.txt по одной строке в строку файла.

8.      Написать программу на языке С, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t0.txt в массив строк (строки длиной не более 256 символов), лексикографически сортирует массив строк методом быстрой сортировки QSort (требуется собственная реализация) и выводит полученный массив в файл ./t0.txt по одной строке в строку файла. Можно использовать любую собственную реализацию алгоритма QSort.

9.      Написать программу на языке С, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t0.txt в массив строк (строки длиной не более 256 символов), лексикографически сортирует массив строк с помощью встроенной функции qsort и выводит полученный массив в файл ./t0.txt по одной строке в строку файла.

10.   Написать программу на языке С, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t1.txt в массив строк (строки длиной не более 10 символов и состоят только из цифр), лексикографически сортирует массив строк с помощью цифровой сортировки с использованием сортировки подсчетом и выводит полученный массив в файл ./t1.txt по одной строке в строку файла.

11.   Написать функцию
float Deg2N(float x,int n);
умножающую число x типа float на множитель 2n , использующую только сложение степени в представлении числа с числом n.

12.   Написать функцию
double Deg2N(double x,int n);
умножающую число x типа double на множитель 2n , использующую только сложение степени в представлении числа с числом n.

13.   На языке С++ написать собственную реализацию стека строк (строки длиной не более 256 символов) неограниченной длины на базе вектора (с реаллокацией памяти в случае заполнения стека). Заполнить стек словами из файла /users/staff/staroverov/lectures/images/t0.txt (слова разделяются пробелами, табуляциями и переходами на следующую строчку). Вывести все элементы стека в файл ./t0.txt по одному слову в строке.

14.   На языке С++ написать собственную реализацию очереди строк (строки длиной не более 256 символов, количество элементов в очереди не более 20). Последовательно заполнять очередь словами из файла /users/staff/staroverov/lectures/images/t0.txt (слова разделяются пробелами, табуляциями и переходами на следующую строчку) и при заполнении очереди выводить все элементы очереди в файл ./t0.txt по одному слову в строке (таким образом, все слова из исходного файла должны быть выведены в выходной файл).

15.   На языке С++ написать собственную реализацию однонаправленного списка строк с фиктивным элементом (строки длиной не более 256 символов). Последовательно заполнить список словами из файла /users/staff/staroverov/lectures/images/t0.txt (слова разделяются пробелами, табуляциями и переходами на следующую строчку). После считывания всех строк вывести все элементы списка в файл ./t0.txt по одному слову в строке (таким образом, все слова из исходного файла должны быть выведены в выходной файл).

16.   На языке С++ написать собственную ссылочную реализацию двунаправленного списка строк (строки длиной не более 256 символов). Последовательно заполнить список словами из файла /users/staff/staroverov/lectures/images/t0.txt (слова разделяются пробелами, табуляциями и переходами на следующую строчку). После считывания всех строк вывести в обратном порядке все элементы списка в файл ./t0.txt по одному слову в строке (таким образом, все слова из исходного файла должны быть выведены в выходной файл, но в обратном порядке).

17.   На языке С++ написать собственную ссылочную реализацию двунаправленного списка строк на основе умных указателей (строки длиной не более 256 символов). Последовательно заполнить список словами из файла /users/staff/staroverov/lectures/images/t0.txt (слова разделяются пробелами, табуляциями и переходами на следующую строчку). После считывания всех строк вывести в обратном порядке все элементы списка в файл ./t0.txt по одному слову в строке (таким образом, все слова из исходного файла должны быть выведены в выходной файл, но в обратном порядке).

18.   На основе STL создать вектор из K списков целых чисел. Заполнить списки числами, записанными в файле /users/staff/staroverov/lectures/images/t2.txt таким образом, чтобы число, остаток от деления которого на K был бы равен i, заносился бы в список с индексом i. Число K должно вводиться с клавиатуры. Содержимое каждого списка должно быть выведено в отдельную строку файла ./t2.txt (через пробел). При выводе перебирать элементы вектора и списков надо через соответствующие итераторы.

19.   Написать собственную реализацию двунаправленного списка строк (строки длиной не более 256 символов) на основе двух стеков, реализованных с помощью STL. Последовательно заполнить список словами из файла /users/staff/staroverov/lectures/images/t0.txt (слова разделяются пробелами, табуляциями и переходами на следующую строчку). После считывания всех строк вывести в обратном порядке все элементы списка в файл ./t0.txt по одному слову в строке (таким образом, все слова из исходного файла должны быть выведены в выходной файл, но в обратном порядке).

20.   В файле /users/staff/staroverov/lectures/images/v.txt заданы координаты вершин графа по паре координат в каждой строке. В каждой строке файла /users/staff/staroverov/lectures/images/e.txt заданы номера вершин очередного ребра графа и длина данного ребра. С помощью STL реализовать алгоритм  Дейкстры (модификацию алгоритма Дейкстры для STL), находящий кратчайший путь в графе (вершины и ребра графа можно загружать из указанных файлов) от первой до последней вершины из списка. Список вершин найденного пути и длину пути вывести в файл ./rez.txt .

21.   Написать программу на языке Python, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t0.txt в список строк, лексикографически сортирует список стандартной функцией и выводит полученный массив в файл ./t0.txt по одной строке в строку файла.

22.   Написать на языке Python функцию, реализующую метод Гаусса решения системы линейных уравнений. Матрицу задавать как словарь, индексированный кортежами. Протестировать написанную функцию.

23.   Написать на языке С++ функцию, реализующую метод Гаусса решения системы линейных уравнений. Матрицу задавать как указатель на указатель. Размерность матрицы передавать через параметры вместе с самой матрицей и правой частью уравнения. Ввести матрицу в указанном виде из файла, где она записана естественным образом (по одной строке матрицы в строке файла без отдельного указания размера матрицы). Пусть правая часть СЛУ задается в том же файле дополнительным столбцом данной матрицы. Решить СЛУ созданной функцией. Результат вывести на экран.

24.   Написать на языке С++ реализацию вектора целых чисел. Размер вектора должен задаваться в параметрах конструктора. Для хранения вектора следует использовать обычный указатель на целые числа. В классе должны быть реализовано все необходимое для соответствия правилу пяти. Для вектора должен работать оператор (операторы) сложения с использованием и без использования r-value-ссылок.

25.   Написать на языке С++ реализацию вектора целых чисел. Размер вектора должен задаваться в параметрах конструктора. Для хранения вектора следует использовать обычный указатель на целые числа. В классе должны быть реализовано все необходимое для соответствия правилу пяти. В классе должны быть реализованы обычный, const- и reverse-итераторы.

26.   Реализовать на языке С++ криволинейный массив на основе STL-вектора векторов. Вектор должен заполняться данными из файла (массив задается в естественном виде без указания размеров) с использованием ifstream и потокового итератора ввода. Вывести полученный массив на экран.

27.   Написать программу на языке С++, которая вводит все слова, разделенные пробелами, табуляциями и переходами на следующую строчку, из файла /users/staff/staroverov/lectures/images/t0.txt в массив string, лексикографически сортирует массив строк с STL-алгоритма sort и выводит полученный массив в файл ./t0.txt по одной строке в строку файла.