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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 16:20   #1
NinoZombie
 
Регистрация: 29.04.2011
Сообщений: 3
Смущение Строки. Проверка принадлежности слова латинскому алфавиту

Очень прошу помочь!
Нужно написать программу на языке C++ с использованием стандартных функций для обработки строк.(не CString)

Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символы. Словом считать последовательность символов, не содержащую пробел. Выдать слова текста и их длины. Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 символов. При этом все строчные буквы заменить на заглавные буквы. Найти массив сумм цифр цифровых слов.


Зависаю вот на этом моменте
Цитата:
Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 символов.
как это сделать? я так понимаю нужно разбить строки на слова, а потом слова на буквы... но разбивать слово на буквы я тоже не умею)

Есть только готовая функция, разделяющая строку на слова.

Код:
int str_sl(char x[200],char* rsl,char* kstr,char* mslov[20])
{int n=0;
char *adrz;
do {
adrz=strstr(x,rsl);
if (adrz==NULL)
adrz=strstr(x,kstr);
mslov[n]=new char[adrz-x];
strncpy(mslov[n],x,adrz-x);
mslov[n][adrz-x]=’\0’;
strcpy(x,adrz+1);
n++;
} while(strcmp(x,””)!=0);
return n;
}
NinoZombie вне форума Ответить с цитированием
Старый 15.05.2011, 17:24   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

если по-быстрому - то так: (а не по-быстрому мне чего-то лень)

Код:
#include <string>
#include <vector>
#include <sstream>

#include <boost/algorithm/string.hpp>

#include <iostream>
#include <locale>

/*
Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой.
Длина текста не больше 200 символов, могут быть использованы любые символы.
Словом считать последовательность символов, не содержащую пробел.
Выдать слова текста и их длины.
Сформировать новую строку из слов, состоящих только из латинских букв, и длиной не более 7 символов
*/

bool is_latin(const std::string& s, const std::locale& l)
{
	for (std::string::const_iterator it = s.begin(); it != s.end(); ++it)
	{
		const char ch = std::toupper(*it, l);
		if (!(ch >= 'A' && ch <= 'Z'))
			return false;
	}
	return true;
}

int main()
{
	setlocale(LC_ALL, "");

	std::string text = "Zero , one , два , three , Fooooour , Пять , six , seven , eight , девять , ten , стопицот .";

	typedef std::vector<std::string> V;
	V v;

	boost::split(v, text, boost::is_any_of(" ,."), boost::token_compress_on);

	const std::locale l("");
	std::stringstream ss;

	for (V::const_iterator it = v.begin(); it != v.end(); ++it)
	{
		if (it->size())
		{
			std::cout << *it << " => " << it->size() << std::endl;
			if (is_latin(*it, l) && it->size() <= 7)
				ss << *it << " ";
		}
	}

	std::cout << ss.str() << std::endl;

	return 0;
}
Проверка: http://liveworkspace.org/code/d75135...d9dd906c33b933
Rififi вне форума Ответить с цитированием
Старый 15.05.2011, 19:49   #3
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

насколько я помню в ASCII все латинские символы меньше 127 ,вот и проверяй
Hemul вне форума Ответить с цитированием
Старый 16.05.2011, 04:48   #4
NinoZombie
 
Регистрация: 29.04.2011
Сообщений: 3
По умолчанию

Всем спасибо!) сейчас попробую
NinoZombie вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отсортировать слова в строке по алфавиту H1ghlander Общие вопросы C/C++ 4 05.11.2010 12:31
ассемблер слова по алфавиту Sined121 Фриланс 4 17.05.2010 09:51
Отсортировать слова в заданном списке по алфавиту. Nynka Помощь студентам 5 08.12.2009 00:45
из строки по алфавиту вывести все гласные( innaa639 Помощь студентам 1 24.02.2009 16:13