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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2009, 11:26   #1
Verwolf
Пользователь
 
Аватар для Verwolf
 
Регистрация: 07.07.2009
Сообщений: 27
По умолчанию Программа по работе с текстами. Нужна помощь :(

Составить программу которая выделяет из текста все что находится в круглых скобках. Использовать процедуры.
Verwolf вне форума Ответить с цитированием
Старый 08.07.2009, 13:21   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
uses crt;
procedure Scob(s:string);
var s1:string;
    i,j,k1,k2:byte;
begin
i:=1;
k1:=0;k2:=0;
while i<=length(s) do
if (s[i]='(')and(i<length(s)) then{если открывающая скобка и это не последний символ}
 begin
  k1:=1;{фиксируем наличие этой скобки}
  j:=i+1;{смотрим дальше}
  s1:='';
  while (s[j]<>')')and(j<length(s))do{пока не закрывающая скобка или не конец строки}
   begin
    s1:=s1+s[j];{составляем слово}
    j:=j+1;
   end;
  i:=i+length(s1)+1;{если слово закончилось скобкой, перескакиваем через него}
  if s[i]=')'then
   begin
    k2:=1;{фиксируем закрывающую скобку}
    writeln(s1);{выводим слово внутри скобок}
   end;
 end
else i:=i+1;{если не открывающая скобка просто идем дальше}
{если нет открывающей скобки, или после нее нет закрывающей}
if (k1=0)or(k2=0) then write('В тексте нет фрагментов, заключенных в круглые скобки!');
end;
var str:string;
begin
clrscr;
writeln('Введите текст:');
readln(str);
Scob(str);
readln
end.
puporev вне форума Ответить с цитированием
Старый 08.07.2009, 13:31   #3
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

Если учитывать, что существует баланс скобок:
Код:
procedure (stroka:string);
var i,t:integer;
begin
 for i:=1 to length(stroka) do
   if stroka[i]='(' then
     begin
       t:=i;
       for i:=t+1 to length(stroka) do
       begin
         if stroka[i]=')' then break;
         write(stroka[i],' ');
       end;
     end;
end;
Посторонним В.

Последний раз редактировалось NSvirus; 08.07.2009 в 13:35.
NSvirus вне форума Ответить с цитированием
Старый 08.07.2009, 15:36   #4
Verwolf
Пользователь
 
Аватар для Verwolf
 
Регистрация: 07.07.2009
Сообщений: 27
По умолчанию

Огромное вам спасибо!!!! Очень сильно мне помогли
Verwolf вне форума Ответить с цитированием
Старый 08.07.2009, 19:49   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Если учитывать, что существует баланс скобок:
В данной задаче это не обязательно, например в строке (() выведет (.
Немного некрасиво когда между скобками ничего нет, выводит пустую строку, надо было что-то придумать.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по работе с файлом *.chm(поиск по ключевым словам) v_skull Общие вопросы Delphi 5 21.06.2009 14:44
НУЖНА ПОМОЩЬ "Программирование алгоритмов с вложенными арифметическими циклами при работе с матрицами" krolya838 Паскаль, Turbo Pascal, PascalABC.NET 0 02.06.2009 17:29
нужна помощь в работе с формой и БД Aliyushka Microsoft Office Excel 0 15.01.2009 23:54
нужна помощь по работе с строками файлов... Ruffian Общие вопросы Delphi 9 15.11.2006 16:05