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

  1. #include <stdio.h> используется для ввода и вывода данных.
  2. #include <string.h> используется для работы со строками.
  3. #include <ctype.h> используется для проверки типа символа (буква или цифра).
  4. Функция is_all реализована с использованием рекурсии и принимает два аргумента: строку s и функцию f.
  5. В функции main используется функция printf для вывода запроса на ввод строки.
  6. Используется функция fgets для считывания строки из стандартного ввода.
  7. Используется функция strtok для разбиения строки на слова.
  8. Используется функция isalpha для проверки, является ли символ буквой.
  9. Используется функция isdigit для проверки, является ли символ цифрой.
  10. В конце программы возвращается 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5
Похожие ответы