Имя пользователя:
Пароль:
 

Название темы: Программа Си
Показать сообщение отдельно

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Хороший вопрос. Надо подумать, но разбивать предложение на лексемы можно и лучше с помощью функции strtok, а сравнивать две строки с помощью функции strcmp

Код: Выделить весь код
//Строки, использование strtok
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
#include <cstring.h>
int main()
{
   system("chcp 1251");
   char string[] = "Это предложение, тест, содержит несколько тестовых строк: тест - тест";
   char *chLeksem[100]; // массив указателей, храним лексемы: один элемент - одно слово
   char *tokenPtr;
   int chIndex = 0;

   cout << "Строка разбивается на лексемы:\n" << string <<"\n\nЛексемы:  \n\n";
   tokenPtr = strtok(string, " .,-:"); // Разбивка предложения по пробелу, точке, запятой, тире, двоеточие

   while(tokenPtr != NULL){
	  chLeksem[chIndex] = tokenPtr;  // Разбиваем предложение на лексемы и сохраняем в массив
	  chIndex++;
	  tokenPtr = strtok(NULL, " .,-:");
	 }
   
   for(int i = 0; i < chIndex; i++)
      cout << chLeksem[i] << endl;

   // Здесь уже будем сравнивать слова\лексемы, надо подумать как.  
 
   system("pause");
   return 0;
}

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 17:52, 31-12-2015 | #2

Название темы: Программа Си