• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача про смайлики

Nataliaa

Ученик
Регистрация
16 Май 2012
Сообщения
5
Реакции
0
Баллы
0
Задача про смайлики

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


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

Напишите программу, которая посчитает количество смайликов в заданном тексте.
Смайликом будем считать последовательность символов, удовлетворяющую условиям:
• первым символом является либо ; (точка с запятой) либо : (двоеточие) ровно один раз
• далее может идти символ – (минус) сколько угодно раз (в том числе символ минус может идти ноль раз)
• в конце обязательно идет некоторое количество (не меньше одной) одинаковых скобок из следующего набора: (, ), [, ].
• внутри смайлика не может встречаться никаких других символов.
Например, нижеприведенные последовательности являются смайликами:
:)
;---------[[[[[[[[
в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики):
:-)]
;--
-)
::-(
:-()
В этой задаче надо будет посчитать количество смайликов, содержащихся в данном тексте.
 
telepat.gif
Знаете, всё чаще задумываюсь - а не начать ли всерьёз удалять подобные запросы с изложением задания, но БЕЗ УКАЗАНИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ. Ведь каждого третьего приходится в это дело носом тыкать.
 
Так пожалуйста:
Код:
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.
 
Спасиииииибо)))) как вы мне помогли))))))) огромное огромное)
 
а почему то когда смайлики пишутся подряд, то он не считает их правильно...
 
а почему то когда смайлики пишутся подряд, то он не считает их правильно...
Поправил:
Код:
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.
 
Назад
Сверху