- •Задание №1. Строки и функции в c.
- •В строке string1 определяет последнее вхождение в нее строки string2. Возвращает указатель на начало вхождения. В случае неуспеха возвращается -1.
- •Задание №2. Массивы и указатели.
- •Задание №3. Ввод данных из командной строки.
- •Задание №4. Побитовые операции
- •Задание №5. Шаблоны функций.
- •Задание №6. Основы ооп, перегрузка операторов
- •Задание №7. Наследование
- •Задание №8. Полиморфизм
Общие требования к выполненным лабораторным работам, без выполнения которых они не рассматриваются:
отступы в программах должны быть;
отступы и скобки в программах должны быть в одном стиле;
комментариев к программам должно быть достаточно для объяснения любой её строчки;
для заданий №1-4 запрещается не рекомендуется использовать конструкции языка C++, а пользоваться только языком C. Для этого нужно сохранять исходные файлы с расширением «.c», а не «.cpp».
Задание №1. Строки и функции в c.
Написать следующие функции в двух вариантах: с использованием индексов и указателей. Вначале должна быть написана функция с использованием индексов. Второй вариант должен являться чисто формальным преобразованием выражений с индексами в выражения с указателями (которое всегда осуществляется самим компилятором, когда он встречает выражения с индексами).
В тех функциях, где может производиться изменение длин строк или требуется создание новых строк, рекомендуется производить выделение памяти с помощью функции malloc (не забудьте очистить её потом с помощью free).
Добавляет строку string2 в конец строки string1 и возвращает указатель на сцепленную строку:
char* strcat(const char* string1, const char* string2)
Добавляет строку string2 в конец строки string1 и возвращает указатель на сцепленную строку. Количество добавляемых символов ограничено значением n.
char* strncat(const char* string1, const char* string2, unsigned int n)
Сравнивает лексографически строки string1 и string2 и возвращает значение, определяющее их соотношение:
< 0 - string1 < string2
0 - string1 == string2
0 - string1 > string2
int strcmp(const char* string1, const char* string2)
То же, что и strcmp, только сравнивается не более n первых символов.
int strncmp(const char* string1, const char* string2, unsigned int n)
Копирует строку string2 вместе с завершающим нулевым символом на место строки string1, и возвращает указатель на строку string1.
char* strcpy(char* string1, const char* string2)
Копирует не более n символов строки string2 на место строки string1, и возвращает указатель на строку string1. Если значение n меньше или равно длине строки string2, нулевой символ ('\0') не добавляется автоматически в новую строку.
char* strncpy(char* string1, const char* string2, unsigned int n)
В строке string1 определяет последнее вхождение в нее строки string2. Возвращает указатель на начало вхождения. В случае неуспеха возвращается -1.
const char* rat(const char* string1, const char* string2)
Возвращает указатель на первое местонахождение символа chr в строке string. chr м.б. нулевым символом ('\0'). Функция возвращает значение NULL, если символ не найден.
const char* strchr(const char* string, int chr)
Возвращает указатель на последнее вхождение символа chr в строке string.
const char* strrchr(const char* string, int chr)
Находит первое вхождение в строке string1 любого символа из строки string2 и возвращает указатель на этот символ. В случае неудачи возвращает значение NULL.
const char* strpbrk(const char* string1, const char* string2)
Возвращает индекс символа в строке string1, который не принадлежит набору символов, задаваемому строкой string2. Завершающий нулевой символ не учитывается при поиске. Индексация, как это принято в С, начинается с нуля.
int strspn(const char* string1, const char* string2)
Возвращает индекс символа в строке string1, который принадлежит набору символов, задаваемому строкой string2. Завершающий нулевой символ не учитывается при поиске. Индексация, как это принято в С, начинается с нуля.
int strcspn(const char* string1, const char* string2)
