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

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

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

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

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

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

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

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

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

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

Ошибка спряталась где-то в условии функции, но я не могу понять в чем именно. Здесь уже был такой вопрос, но единственный ответ на него не оказался верным, поэтому я создал этот вопрос. Как и следует, я не с пустыми руками Листинг того, что я написал.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>

int srch_fnct(char* str)
{
    int groups_count = 0;
    char numbers[]={'1','2','3','4','5','6','7','8','9','0'};

    while(*str!='\0'){
 
            if (*str=='0' || *str=='1' || *str=='3' || *str=='4'
                || *str=='5' || *str=='6' || *str=='7' || *str=='8' || *str=='9')
                {
                    groups_count++;
                    while(*str=='0' || *str=='1' || *str=='2' || *str=='3'
                || *str=='4' || *str=='5' || *str=='6' || *str=='7' || *str=='8' || *str=='9') *str++;

                }
            else if (*str=='2') return groups_count++;

        *str++;
    }
 
    return 0;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    int srch_fnct(char*);
    char str[200];
    int res = 1;
 
    printf("Введите строку: n=");
    gets(str);
    res = srch_fnct(str);
    if (res==0) printf("Группа цифр, удовлетворяющих условию, не встречается");
    else printf("Первая группа цифр, начинающаяся на 2, находится под номером %d",res);
 
    return 0;
}
Прошу помочь мне разобраться в этом.

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

textual
Листинг программы
if (*str=='0' || *str=='1' || *str=='3' || *str=='4'
    || *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
Похожие ответы