Ввести строку символов. Найти в строке номер первой по порядку группы цифр, начинающейся цифрой 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, то в этом случае код продолжает работу, в противном случае он завершается. Вот список действий:
- Проверка первого символа строки на равенство цифре 2.
- Если условие выполняется, то код переходит к следующему шагу, иначе завершается.
- Поиск следующего символа в строке.
- Проверка найденного символа на принадлежность к группе цифр (от 0 до 9).
- Если найденный символ является цифрой, то код продолжает работу, иначе завершается.
- Поиск следующего символа в строке.
- Повторение шагов 4-6 до тех пор, пока не будет найдена группа цифр, начинающаяся с цифры 2.
- Вывод номера первой по порядку группы цифр, начинающейся цифрой 2.