Ввести строку символов. Найти в строке номер первой по порядку группы цифр, начинающейся цифрой 2 - C (СИ)

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

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

Всем привет! Прошу помощи у опытных программистов. Есть вот такая задачка

Ввести строку символов. Найти в строке номер первой по порядку группы цифр, начинающейся цифрой 2.

Сама суть задания:

пользователь вводит строку символов, в которых есть группы чисел, к примеру вот такую строку: "My 56234 program452 the 23663best 8933" в Этой строке 4 группы чисел, группа чисел под номером 3 (23663) начинается на 2 следовательно, функцией должно возвратиться значение 3. Если групп чисел, начинающихся на 2 больше, то нужно вывести значение первой группы из них.

Результат выдаваемый программой:

Результаты разные, то говорит, что групп чисел нет (функция возвращает 0), несмотря на то, что там они есть, либо выдает не верный номер. За редкостью выдается верный вариант.

Как я думаю, в чем ошибка:

Ошибка спряталась где-то в условии функции, но я не могу понять в чем именно. Здесь уже был такой вопрос, но единственный ответ на него не оказался верным, поэтому я создал этот вопрос. Как и следует, я не с пустыми руками Листинг того, что я написал.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <string.h>
  5.  
  6. int srch_fnct(char* str)
  7. {
  8. int groups_count = 0;
  9. char numbers[]={'1','2','3','4','5','6','7','8','9','0'};
  10.  
  11. while(*str!='\0'){
  12. if (*str=='0' || *str=='1' || *str=='3' || *str=='4'
  13. || *str=='5' || *str=='6' || *str=='7' || *str=='8' || *str=='9')
  14. {
  15. groups_count++;
  16. while(*str=='0' || *str=='1' || *str=='2' || *str=='3'
  17. || *str=='4' || *str=='5' || *str=='6' || *str=='7' || *str=='8' || *str=='9') *str++;
  18.  
  19. }
  20. else if (*str=='2') return groups_count++;
  21.  
  22. *str++;
  23. }
  24. return 0;
  25. }
  26. int main()
  27. {
  28. SetConsoleCP(1251);
  29. SetConsoleOutputCP(1251);
  30.  
  31. int srch_fnct(char*);
  32. char str[200];
  33. int res = 1;
  34. printf("Введите строку: n=");
  35. gets(str);
  36. res = srch_fnct(str);
  37. if (res==0) printf("Группа цифр, удовлетворяющих условию, не встречается");
  38. else printf("Первая группа цифр, начинающаяся на 2, находится под номером %d",res);
  39. return 0;
  40. }
Прошу помочь мне разобраться в этом.

Решение задачи: «Ввести строку символов. Найти в строке номер первой по порядку группы цифр, начинающейся цифрой 2»

textual
Листинг программы
  1. if (*str=='0' || *str=='1' || *str=='3' || *str=='4'
  2.     || *str=='5' || *str=='6' || *str=='7' || *str=='8' || *str=='9'

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

В данном коде выполняется проверка первого символа строки на принадлежность к определенной группе цифр. Если первый символ является цифрой 2, то в этом случае код продолжает работу, в противном случае он завершается. Вот список действий:

  1. Проверка первого символа строки на равенство цифре 2.
  2. Если условие выполняется, то код переходит к следующему шагу, иначе завершается.
  3. Поиск следующего символа в строке.
  4. Проверка найденного символа на принадлежность к группе цифр (от 0 до 9).
  5. Если найденный символ является цифрой, то код продолжает работу, иначе завершается.
  6. Поиск следующего символа в строке.
  7. Повторение шагов 4-6 до тех пор, пока не будет найдена группа цифр, начинающаяся с цифры 2.
  8. Вывод номера первой по порядку группы цифр, начинающейся цифрой 2.

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


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

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

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы