|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.11.2009, 00:44 | #1 |
Пользователь
Регистрация: 11.05.2009
Сообщений: 14
|
задача Смайлики
вот такую задачку мне подкинули, помогите пожалуйста с решением..
нужно написать программу, которая посчитает количество смайликов в заданном тексте. Смайликом будем считать последовательность символов, удовлетворяющую условиям: первым символом является либо ; (точка с запятой) либо : (двоеточие) ровно один раз далее может идти символ – (минус) сколько угодно раз (в том числе символ минус может идти ноль раз) в конце обязательно идет некоторое количество (не меньше одной) одинаковых скобок из следующего набора: (, ), [, ]. внутри смайлика не может встречаться никаких других символов. Например, нижеприведенные последовательности являются смайликами: ;---------[[[[[[[[ в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики): :-)] ;-- -) ::-( :-() В этой задаче надо будет посчитать количество смайликов, содержащихся в данном тексте. заранее спасибо |
10.11.2009, 12:02 | #2 |
Форумчанин
Регистрация: 21.09.2009
Сообщений: 431
|
между смайликами будет пробел - то посчитать чисто кол-во пробелов, потом к этому количеству прибавить еденицу - и будет тебе кол-во смайликов
|
10.11.2009, 13:07 | #3 |
Пользователь
Регистрация: 11.05.2009
Сообщений: 14
|
извиняюсь, что не доконца написал, просто исходные данные вот такие, поэтому она становится сложнее.
Вводится одна строка текста, которая может содержать маленькие латинские буквы, пробелы, символы, которые могут встречаться в смайликах. Длина строки не превышает 100 000 символов. |
10.11.2009, 13:15 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
вообще-то, классическая задачка для регулярных выражений. можно и "ручками" реализовать. примерно так - реализуете простейший автомат: начальное состояние - 0 движетесь в цикле по строке, если нашли : или ; переходим в состояние 1 (нашли начальный символ) - проверяем минус, пока найден минус идём по строке, если не минус - проверяем следующий символ - если он в наборе in ['(', ')', '[', ']'] - то увеличиваем счётчик смайликов, движемся по строке, пока символ в заданном наборе, если нет - переход в начальное состояние. первый символ тот, что не в наборе. Конец строки - выход. |
|
22.11.2009, 12:26 | #5 |
Пользователь
Регистрация: 11.05.2009
Сообщений: 14
|
проделал путем сравнения каждого символа,циклично...выдает постоянно ошибку.
может кто сможет цикл прописать, пожалуйста? |
22.11.2009, 13:26 | #6 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
у тебя должен быть класс или структура в которой будут содержать все эти смайлики в виде массива
потом берешь делишь строку на равные части побольше, и в каждом куске ищеещь смайлы, свереясь со структурой в который эти смайлы, если нашел смайл продолжаешь искать с последнего его символа. Естественно код я писать не буду, т.к. как нету мотивации вообще |
08.12.2009, 13:13 | #7 |
Пользователь
Регистрация: 11.05.2009
Сообщений: 14
|
спасибо всем, все получилось
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
А теперь и смайлики ... | DeKot | Свободное общение | 4 | 17.12.2008 17:28 |