Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (20.12.2007 в 17:30)
Можно начать отталкиваться от следующей программы
#include <iostream>
#include <ctype.h>
#include <string>
using namespace std;

int main()
{
  char input[80];

  printf("Введите строку ");
  fgets(input, 80, stdin);

  string str(input);
  string temp;

  int begin = 0;
  int end = 0;
  for(int i = 0; i < 80; i++)
  {
    if(str[i] != ' ')
    {
      end++;
    }
    else
    {
      int is_en = 0;
      int is_ru = 0;
      int is_num = 0;
      int is_math = 0;
      // Извлекаем слово
      temp = str.substr(begin, end - begin);
      for(int j = 0; j < temp.length(); j++)
      {
        int ch = (int)str[j];
        // Число
        if(isdigit(ch)) is_num = 1;
        // Английский символ
        if(isalpha(ch)) is_en = 1;
      }
      if(is_num && is_en)
      {
        // Слово содержит числа и английские символы
        // выводим его
        cout << temp << "\n";
      }
      // Переходим к следующему слову
      begin = end + 1;
      end++;
    }
  }
  // Обарабатываем конечное слово
  if(end > begin)
  {
    temp = str.substr(begin, end);
    int is_en = 0;
    int is_ru = 0;
    int is_num = 0;
    int is_math = 0;
    for(int j = 0; j < temp.length(); j++)
    {
      int ch = (int)str[j];
      // Число
      if(isdigit(ch)) is_num = 1;
      // Английский символ
      if(isalpha(ch)) is_en = 1;
    }
    if(is_num && is_en)
    {
      // Слово содержит числа и английские символы
      // выводим его
      cout << temp << "\n";
    }
  }

  return 0;
}

Здесь проверяются только числа и английские символы, для русских символов следует указать, какая кодировка будет использоваться (DOS, cp1251, KOI8-R, ISO), а для мат.символов и знаков пунктуации - уточнить какие из них будут входить (все кроме пробельных символов?).


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: