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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 23:46   #1
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию Ряд символов. Согласные.

Такое вот задание интересное.
"В ряду символов найти слово, которое содержит максимальное количество согласных"

Как найти такое слово?
Думаю надо как-то разобрать строку на слова.
Потом слово каждое проверить сколько оно содержит согласных..
он как это сделать?? что все буквы алфавита перечислять??
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 14.04.2012, 00:00   #2
sIllent
Пользователь
 
Аватар для sIllent
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию

Цитата:
что все буквы алфавита перечислять??
Ну как минимум массив содержащий все согласные буквы создать придется.
Разбиваешь строку на лексемы и уже в каждой проверяешь кол-во согласных в каждой. Как то так.
sIllent вне форума Ответить с цитированием
Старый 14.04.2012, 00:13   #3
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

эх..
я думал можно проще как-то..
но если уже так делать, то создать массив с гласными, т.к. их меньше, соответственно и меньше кода+проверки.

я думаю, здесь есть какой-то подвох, все намного проще, как мне кажется)
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 14.04.2012, 00:36   #4
sIllent
Пользователь
 
Аватар для sIllent
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию

Цитата:
я думал можно проще как-то..
Возможно.
Цитата:
создать массив с гласными, т.к. их меньше, соответственно и меньше кода+проверки.
Ну дык в тексте могут быть не только гласные и согласные, но и еще какие-нибудь символы точки запятые например. Тогда для них придется делать отдельный массив, как для символов разделителей.
Все не так сложно как кажется)
sIllent вне форума Ответить с цитированием
Старый 14.04.2012, 04:44   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
создать массив с гласными, т.к. их меньше, соответственно и меньше кода+проверки
Неплохая мысль.
Написать функцию проверки символа,
что-то в этом духе...


Код:
bool IsConsonant(unsigned char x)
{
	char* a = "AEIOUYaeiouyАЕЁИОУЭЮЯаеёиоуэюя";
	while(*a)
		if(*a++ == x)
			return false;
	return isalpha(x);
}


void test() 
{
	setlocale(LC_ALL, "RUS");
	char p[] = "aqwerty123 asdfgh$$$ йцукенгш&@@ фывапролдж*";
	char * f = strtok(p, " ,\t\n"), * tmp, * smax = 0;
	int X = 0, cnt;
	do
	{
		tmp = f;
		cnt = 0;
		while(*f)
		{
			if (IsConsonant(*f++))
				cnt++;
			
			if (X < cnt)
			{
				X = cnt;
				smax = tmp;
			}
			
		}
	} while (f = strtok(0, " ,\t\n"));
	if (smax)	printf(smax);
}
Уверен, что можно сократить на половину, но что-то голова не варит...

ЗЫ.
Прикольно написано в мсдн в отношении isalpha() и подобных функций:
Цитата:
Generally these routines execute faster than tests you might write. For example, the following code executes slower than a call to isalpha(c):
if ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z'))
return TRUE;

Последний раз редактировалось EUGY; 14.04.2012 в 05:42.
EUGY вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычислить функцию с по-щью разложения в ряд.(Ряд Тейлора) feelstor Помощь студентам 2 26.12.2011 03:44
Найти сумму элементов и вывести согласные буквы Ilya87 Помощь студентам 3 28.03.2010 04:08
TStringList Замена символа на ряд символов. Alex Cones Общие вопросы Delphi 17 23.03.2010 20:00
Ряд символов, растянуть по ширине. Alex Cones HTML и CSS 2 13.03.2010 09:19
Гласные и согласные буквы artemavd Общие вопросы Delphi 7 22.06.2009 20:53