В заданной строке найти подстроку, находящуюся между пробелами с заданными номерами - C (СИ)
Формулировка задачи:
В заданной строке найти подстроку, находящуюся между пробелами с заданными номерами. Рабочие строки не использовать. Предусмотреть случай, когда в строке таких пробелов нет.
Входные данные:
a*bc -&19 -l sb3> 4-5 z%x
номер начального пробела:2
номер конечного пробела:4
Выходные данные:
-l sb3>
Решение задачи: «В заданной строке найти подстроку, находящуюся между пробелами с заданными номерами»
textual
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- #define N 256
- int main(void)
- {
- setlocale(LC_ALL,"RU");
- int i,nach,kon,c,strt=0,en=0;
- char st[N] = "a*bc -&19 -l sb3> 4-5 z%x";
- printf("Введите начальный номер пробела:");
- scanf("%d",&nach);
- printf("Введите конечный номер пробела:");
- scanf("%d",&kon);
- c=0;
- for(i=0;st[i]!='\0';i++)
- {
- if(st[i]==' ')
- {
- c++;
- if(c==nach)break;
- }
- }
- if(st[i]=='\0')
- {
- printf("В строке пробелов нет!\n");
- return(0);
- }
- else
- {
- strt=i+1;
- for(i=strt;st[i]!='\0';i++)
- {
- if(st[i]==' ')
- {
- c++;
- if(c==kon)break;
- }
- }
- if(st[i]=='\0')
- {
- printf("В строке нет %d-ого пробела!\n", kon);
- return(0);
- }
- else
- en=i;
- }
- printf("Найденная подстрока: \n");
- for(i=strt;i<en;i++)printf("%c",st[i]);
- printf("\n");
- return (0);
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с локалью и вводом-выводом
- Установка начальной локали на русский язык
- Объявление переменных:
- i - счётчик для прохождения по строке
- nach - номер начального пробела в строке
- kon - номер конечного пробела в строке
- c - счётчик количества пройденных пробелов
- strt - индекс первого найденного пробела
- en - индекс последнего найденного пробела
- st[N] - строка, в которой нужно найти подстроку
- Вывод сообщения и запрос начальной позиции пробела у пользователя
- Считывание значения переменной nach с помощью функции scanf
- Вывод сообщения и запрос конечной позиции пробела у пользователя
- Считывание значения переменной kon с помощью функции scanf
- Установка начального значения счётчика пробелов в 0
- Цикл, который проходит по каждому символу строки до тех пор, пока не встретит символ конца строки
- Если текущий символ является пробелом, то увеличивается счётчик пробелов
- Если количество пробелов равно начальному номеру, то цикл прерывается
- Если после прохода по всей строке не было найдено ни одного пробела с заданным номером, то выводится сообщение об отсутствии такого пробела
- Если были найдены пробелы с заданными номерами, то:
- Устанавливается значение переменной strt равным индексу следующего пробела
- Цикл, который проходит по каждому символу от найденного до следующего пробела или до конца строки, если следующего пробела нет
- Если текущий символ является пробелом, то увеличивается счётчик пробелов
- Если количество пробелов равно конечному номеру, то цикл прерывается
- Если после прохода по подстроке не было найдено ни одного пробела с заданным номером, то выводится сообщение об отсутствии такого пробела
- Выводится найденная подстрока
- Возвращается 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д