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