Подсчитать число слов, начинающихся на большую букву и содержащих хотя бы один арифметический знак - C (СИ)
Формулировка задачи:
Подсчитать количество слов, которые начинаются с большой буквы и в слове есть хотя бы один арифметический символ(+-*/%).Написал программу, которая находит в слове большую букву и арифметический символ.Как сделать что бы искал именно первую большую букву?Слова в строке ввожу через пробел.
int Count(char *s) { int i, count=0,j; for(i = 0; s[i] != '\0'; i++) for(j = 0; s[j] != '\0'; j++) { if((isupper(s[i]))&&(strchr(ARIF,s[j]))) count++; } return count; printf("count=%d",count); }
Решение задачи: «Подсчитать число слов, начинающихся на большую букву и содержащих хотя бы один арифметический знак»
textual
Листинг программы
char *p, *q; flag = 1; // флаг начала слова for(p=s; *p; p++) { if (flag && isupper(*p)) { for (q=p+1; *q && *q!= ' ') { if (strchr(ARIF, *q)) { count++; break; } } } if (*p==' ') flag = 1; else flag = 0; }
Объяснение кода листинга программы
- Объявлены две переменные типа char *: p и q.
- Инициализирован флаг count с значением 1.
- В цикле for перебираются символы строки s.
- Если текущий символ является первым символом слова (flag равно 1) и является большой буквой (isupper возвращает 1), то начинается внутренний цикл for.
- Во внутреннем цикле проверяется каждый последующий символ до следующего пробела (или до конца строки, если пробела нет).
- Если текущий символ является арифметическим знаком (проверка с помощью функции strchr, которая возвращает указатель на первый символ, следующий за последним символом строки ARIF), то переменная count увеличивается на 1, и внутренний цикл прерывается.
- Если текущий символ является пробелом, то флаг count устанавливается в 1, иначе - в 0.
- После завершения цикла for значение переменной count будет содержать количество слов, удовлетворяющих условиям задачи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д