В заданной строке найти подстроку, находящуюся между пробелами с заданными номерами - 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);
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с локалью и вводом-выводом
  2. Установка начальной локали на русский язык
  3. Объявление переменных:
    • i - счётчик для прохождения по строке
    • nach - номер начального пробела в строке
    • kon - номер конечного пробела в строке
    • c - счётчик количества пройденных пробелов
    • strt - индекс первого найденного пробела
    • en - индекс последнего найденного пробела
    • st[N] - строка, в которой нужно найти подстроку
  4. Вывод сообщения и запрос начальной позиции пробела у пользователя
  5. Считывание значения переменной nach с помощью функции scanf
  6. Вывод сообщения и запрос конечной позиции пробела у пользователя
  7. Считывание значения переменной kon с помощью функции scanf
  8. Установка начального значения счётчика пробелов в 0
  9. Цикл, который проходит по каждому символу строки до тех пор, пока не встретит символ конца строки
  10. Если текущий символ является пробелом, то увеличивается счётчик пробелов
  11. Если количество пробелов равно начальному номеру, то цикл прерывается
  12. Если после прохода по всей строке не было найдено ни одного пробела с заданным номером, то выводится сообщение об отсутствии такого пробела
  13. Если были найдены пробелы с заданными номерами, то:
    • Устанавливается значение переменной strt равным индексу следующего пробела
    • Цикл, который проходит по каждому символу от найденного до следующего пробела или до конца строки, если следующего пробела нет
    • Если текущий символ является пробелом, то увеличивается счётчик пробелов
    • Если количество пробелов равно конечному номеру, то цикл прерывается
  14. Если после прохода по подстроке не было найдено ни одного пробела с заданным номером, то выводится сообщение об отсутствии такого пробела
  15. Выводится найденная подстрока
  16. Возвращается 0, что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.5 из 5
Похожие ответы