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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 00:44   #1
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию задача Смайлики

вот такую задачку мне подкинули, помогите пожалуйста с решением..

нужно написать программу, которая посчитает количество смайликов в заданном тексте.

Смайликом будем считать последовательность символов, удовлетворяющую условиям:

первым символом является либо ; (точка с запятой) либо : (двоеточие) ровно один раз
далее может идти символ – (минус) сколько угодно раз (в том числе символ минус может идти ноль раз)
в конце обязательно идет некоторое количество (не меньше одной) одинаковых скобок из следующего набора: (, ), [, ].
внутри смайлика не может встречаться никаких других символов.
Например, нижеприведенные последовательности являются смайликами:



;---------[[[[[[[[

в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики):

:-)]

;--

-)

::-(

:-()

В этой задаче надо будет посчитать количество смайликов, содержащихся в данном тексте.

заранее спасибо
romich.91 вне форума Ответить с цитированием
Старый 10.11.2009, 12:02   #2
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

между смайликами будет пробел - то посчитать чисто кол-во пробелов, потом к этому количеству прибавить еденицу - и будет тебе кол-во смайликов
kakawkin вне форума Ответить с цитированием
Старый 10.11.2009, 13:07   #3
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию

извиняюсь, что не доконца написал, просто исходные данные вот такие, поэтому она становится сложнее.

Вводится одна строка текста, которая может содержать маленькие латинские буквы, пробелы, символы, которые могут встречаться в смайликах. Длина строки не превышает 100 000 символов.
romich.91 вне форума Ответить с цитированием
Старый 10.11.2009, 13:15   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
между смайликами будет пробел - то посчитать чисто кол-во пробелов
категорически нет!

вообще-то, классическая задачка для регулярных выражений.
можно и "ручками" реализовать. примерно так - реализуете простейший автомат:
начальное состояние - 0
движетесь в цикле по строке, если нашли : или ; переходим в состояние 1 (нашли начальный символ) - проверяем минус, пока найден минус идём по строке, если не минус - проверяем следующий символ - если он в наборе in ['(', ')', '[', ']'] - то увеличиваем счётчик смайликов, движемся по строке, пока символ в заданном наборе, если нет - переход в начальное состояние. первый символ тот, что не в наборе. Конец строки - выход.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2009, 12:26   #5
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию

проделал путем сравнения каждого символа,циклично...выдает постоянно ошибку.
может кто сможет цикл прописать, пожалуйста?
romich.91 вне форума Ответить с цитированием
Старый 22.11.2009, 13:26   #6
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

у тебя должен быть класс или структура в которой будут содержать все эти смайлики в виде массива

потом берешь делишь строку на равные части побольше, и в каждом куске ищеещь смайлы, свереясь со структурой в который эти смайлы, если нашел смайл продолжаешь искать с последнего его символа.

Естественно код я писать не буду, т.к. как нету мотивации вообще
lennon вне форума Ответить с цитированием
Старый 08.12.2009, 13:13   #7
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию

спасибо всем, все получилось
romich.91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А теперь и смайлики ... DeKot Свободное общение 4 17.12.2008 17:28