Найти в строке слова, состоящие только из букв и только из цифр - C (СИ)
Формулировка задачи:
Помогите новичку, прошу.
УСЛОВИЕ: Вводят строку слов. Необходимо найти слова, состоящие только из букв и только из цифр.
использую хидер-файлы для строк:
#include <string.h> (для ф-и strtok, чтобы отделять слова)
#include <ctype.h>
и ф-ю isdigit (для работы с цифрами)
и ф-ю isalpha (для работы с буквами)
Вот что получилось:
#include <string.h> #include <stdio.h> #include <ctype.h> int main() { char str[80]; char *p; printf("\nInput string\n"); gets(str); int k=1; do {p = strtok((k?inp:NULL), " "); k=0; if (p) { printf("\n%s ",p); isdigit (p); isalpha(p); } }while(p); getch(); return 0; }
Решение задачи: «Найти в строке слова, состоящие только из букв и только из цифр»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> int is_all(const char * s, int (*f)(int)) { return ( ! *s ) ? 1 : ( f(*s) && is_all(s + 1, f) ); } #define DELIM " \t\n" int main(void) { char buf[BUFSIZ]; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) { char * p = strtok(buf, DELIM); while ( p ) { if ( is_all(p, isalpha) ) printf("%s - letters\n", p); else if ( is_all(p, isdigit) ) printf("%s - digits\n", p); p = strtok(NULL, DELIM); } } return 0; }
Объяснение кода листинга программы
В этом коде реализована функция is_all
, которая принимает два аргумента: строку s
и функцию f
. Функция is_all
возвращает 1
, если все символы в строке s
удовлетворяют условию, определенному функцией f
, и 0
в противном случае.
Функция main
считывает строку из стандартного ввода, разбивает ее на слова и проверяет каждое слово на наличие только букв или только цифр. Если слово состоит только из букв, оно выводится как letters
. Если слово состоит только из цифр, оно выводится как digits
.
В этом коде используются следующие функции и библиотеки:
#include <stdio.h>
используется для ввода и вывода данных.#include <string.h>
используется для работы со строками.#include <ctype.h>
используется для проверки типа символа (буква или цифра).- Функция
is_all
реализована с использованием рекурсии и принимает два аргумента: строкуs
и функциюf
. - В функции
main
используется функцияprintf
для вывода запроса на ввод строки. - Используется функция
fgets
для считывания строки из стандартного ввода. - Используется функция
strtok
для разбиения строки на слова. - Используется функция
isalpha
для проверки, является ли символ буквой. - Используется функция
isdigit
для проверки, является ли символ цифрой. - В конце программы возвращается
0
, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д