Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2010, 19:32   #1
Proger_1
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 21
По умолчанию Разбивка строки на лексемы

Доброго времени суток.
Не подскажите ли, с помощью какой команды можно разбить строку на лексемы (то есть на отдельные слова). Затем нужно будет вывести эти лексемы в обратном порядке, но думаю, что с этим я уже справиться смогу, но вот как разбить строку на эти самые лексемы ?? (препод сказал использовать char *strtok, сказал поищи в нете, есть примеры этой команды, но я что-то нигде найти не смог..)
Не поможете ?
Proger_1 вне форума Ответить с цитированием
Старый 29.03.2010, 19:48   #2
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Сложного ничего нет
вот код который выводит лексемы в обратном порядке:
Код:
#include "stdafx.h"
#include <iostream>
#include <iomanip> 
#include <string.h> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "Russian");
	char string[] = "Это предложение содержит пять лексем"; 
	char *tokenPtr[10];// Массив указателей на лексемы (в данном случае слова)
	int i=0, j;

	cout<<string<<"\n";

	tokenPtr[i]=strtok(string, " ");
	i++;

	while (tokenPtr[i-1] != NULL) //Разбивает строку на слова и указатель на каждое слово заносит в массив  tokenPtr
	{ 
		tokenPtr[i] = strtok(NULL, " ");
		i++;		
	} 
	
	for (j=(i-2); j>=0; j--) // Выводит слова в обратном порядке
		cout << tokenPtr[j]<<" ";
	cout<<"\n";
		
	return 0;
}
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 29.03.2010, 20:26   #3
Proger_1
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 21
По умолчанию

atenon большое спасибо за помощь.
Приступаю ко 2-ой задаче: программа считывает дату в формате 07/21/55 и выводит в формате 21 July, 1955. Названия месяцев задать как перечисляемый тип.
Код:
#include <iostream>
#include <iomanip> 
#include <string.h> 
using namespace std;

int main()
{
	char string[] = "07/21/55";
	cout<<string<<"\n";
	enum Months{Jan, Feb, Mar, Apr, May, Jun, Jul=07, Aug, Sep, Oct, Nov, Dec};
	enum Months m;

	return 0;
}
Правильно задал названия месяцев ? Длаьше пока что ступр... может кто-то мысль решения подкинет ? Нужен ли будет в этой задаче оператор выбора case ?

Последний раз редактировалось Proger_1; 29.03.2010 в 20:30.
Proger_1 вне форума Ответить с цитированием
Старый 29.03.2010, 20:38   #4
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Задачи спортивного азарта не вызывают ввиду простоты
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол

Последний раз редактировалось atenon; 30.03.2010 в 07:08.
atenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Asm. Разбивка строки на две части levis07 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 30.03.2010 14:30
Лексемы в С\С++ Айдар Помощь студентам 9 08.03.2010 21:22
Delphi лексемы Toni Milano Помощь студентам 3 17.11.2009 07:30
Разбивка на страницы Busine2009 Microsoft Office Word 2 12.08.2009 09:33
Разбивка строки в Delphi Slava Помощь студентам 7 30.06.2009 09:05