Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ПвСИБ. Программирование на языке C.docx
Скачиваний:
14
Добавлен:
27.04.2022
Размер:
124.58 Кб
Скачать

Задание 6

Разработать функцию main, демонстрирующую работу функций из заданий 1 и 5. Организовать меню и возможность многократной демонстрации заданий.

Индивидуальные варианты заданий

  1. Сортировка выбором19

  2. Сортировка вставками

  3. Пузырьковая сортировка

  4. Сортировка Шелла

  5. Быстрая сортировка

  6. Сортировка слиянием

Контрольные вопросы

  1. Что такое указатель?

  2. В чем отличие константных указателей и указателей на константный объект?

  3. Привидите примеры определения указателей, указателей на константные объекты, константных указателей и константных указателей на константные объекты

  4. Влияет ли изменение значения параметра функции на фактически переданную в функцию переменную, если передача происходит по значению?

  5. Влияет ли изменение значения параметра функции на фактически переданную в функцию переменную, если передача происходит через указатель?

  6. Можно ли возвращать указатель на локальный объект? Если нет, почему?

  7. Как представляется массив в памяти?

Практикум №5 Строки

Цель практикума

Овладеть навыками работы со строками в языке программирвоания C

Краткие теоретические сведения

Строки

Частным случаем массивов являются строки – массив символов типа char.

По соглашению, в конце строки добавляется нулевой символ. Он является маркером конца строки. Поэтому алгоритмам работы со строками необязательно передавать длину массива.

Строковые литералы в языке C имеют тип данных const char*, поэтому изменение символов в строке не допустимо.

Задание

Задание 1

Написать функцию подсчёта дины строки. Функция принимает исходную строку и возвращает количество символов в строке, не включая нулевой символ.

Прототип функции int strlen(const char *str).

Функция не должна использовать функции консольного ввода-вывода.

Задание 2

Написать функцию, поиска подстроки в строке. Функция принимает исходную строку и подстроку для поиска и возвращает адрес подстроки, если подстрока найдена, 0 в противном случае. Обращение к символам строки после нулевого символа недопустимо.

Прототип функции char *find(const char *str, const char *substr).

Функция не должна использовать функции консольного ввода-вывода.

Задание 3

Написать функцию, удаления подстроки в строке. Функция принимает исходную строку и подстроку для поиска. С помощью функции find найти адрес начала подстроки и затем удалить эту подстроку. Оставшиеся в конце символы заполнить нулями. Обращение к символам строки после нулевого символа недопустимо.

Прототип функции void delete(char *str, const char *substr).

Функция не должна использовать функции консольного ввода-вывода.

Задание 4

Написать функцию копирования строк. Функция принимает исходную строку, буфер для копирования и размер буфера. Если длина исходной строки больше размера буфера, необходимо скопировать столько символов, сколько вместится в буфер, не забыв добавить в конце строки нулевой символ.

Прототип функции void strcpy(char *dest, int len, const char *src).

Функция не должна использовать функции консольного ввода-вывода.

Задание 5

Написать функцию конкатенации строк. Функция принимает исходные строки, буфер для размещения и размер буфера. Если сумма длин исходных строк больше размера буфера, необходимо скопировать столько символов, сколько вместится в буфер, не забыв добавить в конце строки нулевой символ.

Прототип функции void strcat(char *dest, int len, const char *first, const char *second).

Функция не должна использовать функции консольного ввода-вывода.