Задания для самостоятельного выполнения
Напишите программу, решающую задачу по номеру своего варианта.
Требования и ограничения
Необходимые действия реализовать в виде функций.
Указания по выполнению работы
Для использования строковых функций необходимо включить в программу заголовочный файл <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.