16.05.2012, 10:49 | #1 (permalink) |
Новичок
Регистрация: 16.05.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задача про смайлики
Смайлики Имя входного файла: d.in Имя выходного файла: d.out Максимальное время работы на одном тесте: 1 секунда Максимальный объем используемой памяти: 64 мегабайта Напишите программу, которая посчитает количество смайликов в заданном тексте. Смайликом будем считать последовательность символов, удовлетворяющую условиям: • первым символом является либо ; (точка с запятой) либо : (двоеточие) ровно один раз • далее может идти символ – (минус) сколько угодно раз (в том числе символ минус может идти ноль раз) • в конце обязательно идет некоторое количество (не меньше одной) одинаковых скобок из следующего набора: (, ), [, ]. • внутри смайлика не может встречаться никаких других символов. Например, нижеприведенные последовательности являются смайликами: :) ;---------[[[[[[[[ в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики): :-)] ;-- -) ::-( :-() В этой задаче надо будет посчитать количество смайликов, содержащихся в данном тексте. |
16.05.2012, 10:49 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно, что данные темы уже обсуждаются Задача по С + + Задача по С++ |
16.05.2012, 11:41 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Знаете, всё чаще задумываюсь - а не начать ли всерьёз удалять подобные запросы с изложением задания, но БЕЗ УКАЗАНИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ. Ведь каждого третьего приходится в это дело носом тыкать. |
16.05.2012, 15:48 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Так пожалуйста:
Код:
Var f:Text; C,C1:Char; Nsm:Word; b:Boolean; Begin Assign(f,'d.in'); Reset(f); Nsm:=0; Repeat b:=false; Read(f,C); If (C=':') or (C=';') then begin b:=true; Read(f,C); If C='-'then repeat Read(f,C); until (C<>'-') or EoF(f); If (C='(') or (C=')') or (C='[') or (C=']') then begin C1:=C; repeat Read(f,C); until (C<>C1) or EoF(f); end else b:=false; If b then Inc(Nsm); end; Until EoF(f); Close(f); Assign(f,'d.out'); Rewrite(f); Writeln(f,Nsm,' smiles'); Close(f); End. |
16.05.2012, 17:58 | #5 (permalink) |
Новичок
Регистрация: 16.05.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасиииииибо)))) как вы мне помогли))))))) огромное огромное)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
16.05.2012, 20:27 | #7 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Var f:Text; C,C1:Char; Nsm:Word; b:Boolean; Begin Assign(f,'d.in'); Reset(f); Nsm:=0; Read(f,C); Repeat b:=false; If (C=':') or (C=';') then begin b:=true; Read(f,C); If C='-'then repeat Read(f,C); until (C<>'-') or EoF(f); If (C='(') or (C=')') or (C='[') or (C=']') then begin C1:=C; repeat Read(f,C); until (C<>C1) or EoF(f); end else b:=false; If b then Inc(Nsm); end else If Not(EoF(f)) then Read(f,C); Until EoF(f); Close(f); Assign(f,'d.out'); Rewrite(f); Writeln(f,Nsm,' smiles'); Close(f); End. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|