Ввести строку символов. Найти в строке номер первой по порядку группы цифр, начинающейся цифрой 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д