Задания для самостоятельного выполнения

Напишите программу, решающую задачу по номеру своего варианта.

Требования и ограничения

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

Указания по выполнению работы

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

Варианты заданий

  1. Сформировать из исходной строки новую строку, удалив из неё все последовательности одинаковых символов, оставив число повторов и один символ. Например: при вводе aaabcc результат работы программы будет 3ab2c.
  2. Обратить порядок букв в каждом слове исходной строки. Например: при вводе exit light enter night результат работы программы будет tixe thgil retne thgin.
  3. Вывести на экран строку, составленную из n-ой буквы каждого слова исходной строки, где n - номер слова.
  4. Выполнить частотный анализ введённой строки и удалить из неё слово (или слова, если их несколько) с максимальной суммой частот символов.
  5. Вывести на экран длиннейшую подстроку исходной строки, содержащую только уникальные символы. Например: при вводе theskyisturningredreturntopower результат работы программы будет kyisturn.
  6. Найти самое длинное слово-палиндром в строке.
  7. Определить, есть ли среди слов введённой строки целые числа и просуммировать их.
  8. Вывести на экран слова исходной строки, встречающиеся в ней только один раз. Например: при вводе When hunter meets hunter this hunter eats hunter результат работы программы будет When meets this eats.
  9. Разместить в новой строке слова исходной строки в порядке убывания их длины.
  10. Составить из исходной строки новую, удалив все слова наиболее часто встречающейся длины. Например: при вводе Vicariously I live while the whole world результат работы программы будет Vicariously I live the.
  11. Определить, есть ли среди слов введённой строки вещественные числа и найти среднее.
  12. Удалить из слов исходной строки все вхождения 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.