Задания для самостоятельного выполнения
Напишите программу, решающую задачу по номеру своего варианта.
Требования и ограничения
Необходимые действия реализовать в виде функций.
Указания по выполнению работы
Для использования строковых функций необходимо включить в программу заголовочный файл <string.h>. Ниже перечислены строковые функции, которые могут быть полезны при выполнении данной работы.
| Прототип функции | Описание |
|---|---|
size_t strlen(const char *str) | возвращает длину str |
char *strcat(char *str1, char *str2) | присоединяет к str1 копию str2 и завершает str1 нулевым символом. Возвращает str1 |
char *strchr(char *str, int ch) | возвращает указатель на первое вхождение младшего байта ch в str или NULL, если символ не найден |
char *strrchr(char *str, int ch) | возвращает указатель на последнее вхождение младшего байта ch в str или NULL, если символ не найден |
char *strstr(char *str1, char *str2) | возвращает указатель на первое вхождение str2 в str1 или NULL, если вхождения нет |
int strcmp(char *str1, char *str2) | сравнивает в лексикографическом порядке str1 и str2 и возвращает значение: меньше нуля, если str1 < str2; нуль, если str1 == str2; больше нуля, если str1 > str2 |
char *strcpy(char *str1, char *str2) | копирует содержимое str2 в str1 и возвращает str1 |
size_t strspn(char *str1, char *str2) | возвращает индекс первого символа в str1, который не совпадает ни с одним из символов в str2 |
size_t strсspn(char *str1, char *str2) | возвращает индекс первого символа в str1, который совпадает с любым из символов в str2 |
char *strpbrk(char *str1, char *str2) | возвращает указатель на первый символ в str1, который совпадает с любым символом в str2 |
char *strtok(char *str1, char *str2) | позволяет разделить str1 на лексемы, str2 - разделители лексем |
Пример использования функции strtok():
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "I’m going off the rails on a crazy train";
char delim[] = ", ";
char *p = strtok(str, delim);
printf(p);
while ((p = strtok(NULL, delim)))
printf("|%s", p);
printf("\n");
return 0;
}
Результаты работы программы:
I’m|going|off|the|rails|on|a|crazy|train
Варианты заданий
- Сформировать из исходной строки новую строку, удалив из неё все последовательности одинаковых символов, оставив число повторов и один символ. Например: при вводе
aaabccрезультат работы программы будет3ab2c. - Обратить порядок букв в каждом слове исходной строки. Например: при вводе
exit light enter nightрезультат работы программы будетtixe thgil retne thgin. - Вывести на экран строку, составленную из n-ой буквы каждого слова исходной строки, где
n- номер слова. - Выполнить частотный анализ введённой строки и удалить из неё слово (или слова, если их несколько) с максимальной суммой частот символов.
- Вывести на экран длиннейшую подстроку исходной строки, содержащую только уникальные символы. Например: при вводе
theskyisturningredreturntopowerрезультат работы программы будетkyisturn. - Найти самое длинное слово-палиндром в строке.
- Определить, есть ли среди слов введённой строки целые числа и просуммировать их.
- Вывести на экран слова исходной строки, встречающиеся в ней только один раз. Например: при вводе
When hunter meets hunter this hunter eats hunterрезультат работы программы будетWhen meets this eats. - Разместить в новой строке слова исходной строки в порядке убывания их длины.
- Составить из исходной строки новую, удалив все слова наиболее часто встречающейся длины. Например: при вводе
Vicariously I live while the whole worldрезультат работы программы будетVicariously I live the. - Определить, есть ли среди слов введённой строки вещественные числа и найти среднее.
- Удалить из слов исходной строки все вхождения n-го символа, где
n- номер обрабатываемого слова. Если в слове меньше n букв, считать символы циклически. Например: при вводеPeople think I'm insane because I am frowning all the timeрезультатом будетeople tink I' insne becase m frownin a he tie.