Определить каких слов в тексте больше: состоящие только из слов или только из букв - C (СИ)
Формулировка задачи:
определить каких слов в тексте больше: состоящие только из слов или только из букв??? я не могу сделать проверку на наличие в слове и букв и цифр!
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#define N 100
int main()
{
char text[N];
size_t i = 0;
size_t wdigit = 0; //öèôðû
size_t walpha = 0; //ГЎГіГЄГўГ»
printf("\n Ââåäèòå ñòðîêó: \n");
gets(text);
/*ïðîâåðêГ* Г*Г* Г*Г*ëè÷èå ГЎГіГЄГў ГЁ Г¶ГЁГґГ°*/
while (text[i])
{
if(isalpha(text[i])&&!isalnum(text[i + 1])) walpha++;
else
if(isdigit(text[i])&&!isalnum(text[i + 1])) wdigit++;
i++;
}
/*âûâîä ðåçóëüòГ*ГІГ**/
printf("\n Ñëîâ èç áóêâ: %d \n",walpha);
printf("\n Ñëîâ èç öèôð: %d \n", wdigit);
if(walpha > wdigit)
printf("\n Ñëîâ èç áóêâ áîëüøå.");
else
printf("\n Ñëîâ èç öèôð áîëüøå.");
getch();
}Решение задачи: «Определить каких слов в тексте больше: состоящие только из слов или только из букв»
textual
Листинг программы
char s[64];
fgets(s, 64, stdin);
if(strlen(s) == strspn(s, "abcdefghigklmnopqrstuvwxyz")){
// слово сосоит только из букв
}
if(strlen(s) == strspn(s, "012345678")){
// слово состоит только из цифр.
}
if(strlen(s) == strspn(s, "abcdefghigklmnopqrstuvwxyz012345678")){
// слово состоит из букв и цифр
}
Объяснение кода листинга программы
В этом коде реализована функция, которая принимает строку в качестве входного параметра и проверяет, состоит ли она только из букв, только из цифр или из букв и цифр. Список действий:
- Создается массив символов s размером 64.
- Ввод строки с помощью функции fgets в массив s.
- Проверка длины строки на равенство длине строки без пробелов с помощью функции strlen и функции strspn.
- Если длина строки равна длине строки без пробелов, значит строка состоит только из букв.
- Если длина строки равна длине строки без пробелов, значит строка состоит только из цифр.
- Если длина строки равна длине строки без пробелов, значит строка состоит из букв и цифр. Список переменных и их значений:
- s - массив символов для ввода строки.
- fgets(s, 64, stdin) - функция для ввода строки в массив s.
- strlen(s) - функция для определения длины строки.
- strspn(s,
abcdefghigklmnopqrstuvwxyz) - функция для определения длины строки без пробелов, состоящей только из букв. - strspn(s,
012345678) - функция для определения длины строки без пробелов, состоящей только из цифр. - strspn(s,
abcdefghigklmnopqrstuvwxyz012345678) - функция для определения длины строки без пробелов, состоящей из букв и цифр.