Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 16.05.2012, 10:49   #1 (permalink)
Nataliaa
Новичок
 
Регистрация: 16.05.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Задача про смайлики

Помогите решить задачу, пожалуйста!


Смайлики
Имя входного файла: d.in
Имя выходного файла: d.out
Максимальное время работы на одном тесте: 1 секунда
Максимальный объем используемой памяти: 64 мегабайта

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

Старый 16.05.2012, 10:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно, что данные темы уже обсуждаются

Задача по С + +
Задача по С++

Старый 16.05.2012, 11:41   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Название: telepat.gif
Просмотров: 1778

Размер: 1.7 Кб
Знаете, всё чаще задумываюсь - а не начать ли всерьёз удалять подобные запросы с изложением задания, но БЕЗ УКАЗАНИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ. Ведь каждого третьего приходится в это дело носом тыкать.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.05.2012, 12:08   #3 (permalink)
Nataliaa
Новичок
 
Регистрация: 16.05.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

так паскаль)
Nataliaa вне форума   Ответить с цитированием
Старый 16.05.2012, 15:48   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Nataliaa Посмотреть сообщение
так паскаль)
Так пожалуйста:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.05.2012, 17:58   #5 (permalink)
Nataliaa
Новичок
 
Регистрация: 16.05.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасиииииибо)))) как вы мне помогли))))))) огромное огромное)
Nataliaa вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 16.05.2012, 18:25   #6 (permalink)
Nataliaa
Новичок
 
Регистрация: 16.05.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а почему то когда смайлики пишутся подряд, то он не считает их правильно...
Nataliaa вне форума   Ответить с цитированием
Старый 16.05.2012, 20:27   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Nataliaa Посмотреть сообщение
а почему то когда смайлики пишутся подряд, то он не считает их правильно...
Поправил:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.