Предмет: Информатика, автор: coolkate1

(СИ)Требуется выделить в строке-предложении s все слова, разделенные символами-разделителями «_.,;:\n\t!?» и напечатать слова, содержащие хотя бы одну цифру.
Вот, что я написала, но код не работает: (возможно стоит использовать функцию isdigit()
#define _CRT_SECURE_NO_WARNINGS
#define DELIMITERS ".,:;\n\t!?"
#include
#include
#include
#include
#include
using namespace std;

int main()
{
setlocale(LC_ALL, "rus");
char s[100];
char* word;
int i, k=0;
int(isdiget(int c));
fgets(s, 100, stdin);
word = strtok(s, DELIMITERS);
while (word != NULL) {
puts(word);
word = strtok(NULL, DELIMITERS);
}
for (i = 0; s[i]; i++) {
char c;
c = s[i];
if( (c > 0) && (c < 9)) {
k++;
}
}
cout << k;
return 0;
}


restIess: СИ или с++ нужен?
coolkate1:
restIess: У тебя тогда вообще код не на СИ...
coolkate1: )))
coolkate1: Хотелось бы увидеть твой вариант решения задачи с использованием isdigit()
restIess: Я когда-то делал такую задачу уже, сейчас поищу
restIess: Так на чистом СИ нужен ответ или на плюсах?
restIess: Твой код это С++

Ответы

Автор ответа: restIess
1

/*Твой код написан на С++, поэтому я так понимаю, что ответ нужен также на нём.*/

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <string>

#define SIZE 256

int main() {

   const char* DELIMITERS = "_.,;:\n\t!?";        

   char S[SIZE] = "Hello, my2. friend_ia2m?hh2";    

   char* ptr = 0;  

   ptr = strtok(S, DELIMITERS);

   while (ptr) {                

       for (int i = 0; i < strlen(ptr); i++) {

           if (isdigit(ptr[i]))

               std::cout << ptr << "\n";

       }

       ptr = strtok(0, DELIMITERS);    

   }

   return 0;

}

Похожие вопросы
Предмет: Русский язык, автор: настя2380
Предмет: Русский язык, автор: BOOSS2000
Предмет: История, автор: maximmaruta1