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