В заданной строке найти подстроку, находящуюся между пробелами с заданными номерами - 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, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д