Функция определяет в строке номер позиции слова с заданным номером - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Разработать функцию, которая выполняет ту обработку символьной строки, которая определена в Вашем индивидуальном задании. При реализации функции запрещается пользоваться функциями библиотек языка C. Функция определяет в строке номер позиции слова с заданным номером.

Решение задачи: «Функция определяет в строке номер позиции слова с заданным номером»

textual
Листинг программы
int func(char *s, int num)
{
    int n = 0, f = 0;
    char *p = s;
    
    while (*p) {
        if (*p == ' ')
            f = 0;
        else if (f == 0) {
            f = 1;
            if (++n == num)
                break;
        }
        p++;
    }
    
    return *p ? (int)(p - s) + 1 : 0;
}
 
int main(int argc, const char * argv[])
{    
    int n, pos;
    char s[] = "hello world world\0";
    
    scanf("%d", &n);
    
    if (pos = func(s, n))
        printf("pos = %d\n", pos);
    else
        printf("not found\n");
    
    return 0;
}

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

  1. В функции func мы ищем в строке s слово с заданным номером.
  2. Переменная n отслеживает количество искомых слов.
  3. Переменная f отслеживает текущее слово.
  4. Переменная p является указателем на текущий символ в строке.
  5. В цикле while мы проходим по каждому символу в строке.
  6. Если текущий символ является пробелом, то мы сбрасываем значение f обратно на 0.
  7. Если f равно 0, то мы устанавливаем f в 1, обновляем значение n и проверяем, равно ли n заданному номеру. Если да, то мы выходим из цикла с помощью оператора break.
  8. В конце функции func мы возвращаем позицию последнего найденного слова в строке.
  9. В функции main мы считываем из консоли номер слова для поиска.
  10. Затем мы вызываем функцию func и сохраняем ее возвращаемое значение в переменной pos.
  11. Если слово было найдено, мы выводим его позицию на экран.
  12. Если слово не было найдено, мы выводим сообщение not found.
  13. В конце функции main мы возвращаем 0, что означает успешный конец работы программы.

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


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

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

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