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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 18:26   #1
Лилля
 
Регистрация: 25.09.2010
Сообщений: 4
По умолчанию Строковый тип данных(Паскаль)

Программа должна исключить из строки текст,заключенный в круглые скобки(не считая скобок).Мой исходник:
Код:
Program Pr1;
uses crt;
var s:string;
i:byte;
begin
clrscr;
writeln('vvedite stroku');
readln(s);
if pos('(',s)<>0 then delete(s,pos('(',s)+1,pos(')',s)-pos('(',s)-1);
write(s);
readln;
end.
Программа не работает, например, если перед парными скобками стоит одиночная закрывающая ghjghjgh)ghjghjg(ghjghjg) то строка остается такой же!также не работает если строка например ghjghjgj((ghjghjgjh))ghjgjhgj!должн ы остаться только внешние скобки!что нужно изменить?

Последний раз редактировалось Stilet; 24.11.2010 в 19:04.
Лилля вне форума Ответить с цитированием
Старый 24.11.2010, 19:14   #2
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

программа немного бредовая, но работает)))
Код:
program z_1;

var
  s, si: string;
  i, p, p1: integer;

begin
  writeln('введите строку');
  readln(s);
  p := pos('(', s);
  if p <> 0 then begin
    i := p;
    while i <= length(s) do
    begin
      i := i + 1;
      if copy(s, i, 1) = ')' then 
      begin
        p1 := i + 1;
      end;
    end;
    si := copy(s, p, p1 - p);
    for i := 1 to length(s) do
      if si = copy(s, i, p1 - p) then delete(s, i, p1 - p);
    write(s);
  end;
end.
в твоем варианте исправить проблематично... т.к. определяются позиции первой встречающейся скобки.

Последний раз редактировалось unbanned; 24.11.2010 в 20:31.
unbanned вне форума Ответить с цитированием
Старый 24.11.2010, 21:46   #3
Лилля
 
Регистрация: 25.09.2010
Сообщений: 4
По умолчанию

Спасибо,только твоя программа убирает текст внутри скобок заодно вместе со скобками.не подскажешь как сделать,чтобы скобки все-таки оставались?
Лилля вне форума Ответить с цитированием
Старый 24.11.2010, 23:06   #4
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

там где определяется позиция первой скобки надо прибавить единицу...
Код:
program z_1;

var
  s, si: string;
  i, p, p1: integer;

begin
  writeln('введите строку');
  readln(s);   
  if pos('(', s) <> 0 then begin
    p := pos('(', s) + 1;
    i := p;
    while i <= length(s) do
    begin
      i := i + 1;
      if copy(s, i, 1) = ')' then 
      begin
        p1 := i;
      end;
    end;
    si := copy(s, p, p1 - p);    
    if (p1 - p) > 0 then begin
      i := 1;        
      while i <= length(s) do 
      begin
        if si = copy(s, i, p1 - p) then delete(s, i, p1 - p)
        else i := i + 1;
      end;
    end;
    writeln(s);
  end;
end.
ну вот, как-то так

Последний раз редактировалось unbanned; 25.11.2010 в 18:36.
unbanned вне форума Ответить с цитированием
Старый 25.11.2010, 21:08   #5
Лилля
 
Регистрация: 25.09.2010
Сообщений: 4
По умолчанию

спасибо
Лилля вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковый тип данных Ehha1234 Паскаль, Turbo Pascal, PascalABC.NET 0 08.06.2010 10:43
Строковый тип данных Skip72rus Паскаль, Turbo Pascal, PascalABC.NET 0 28.04.2010 12:48
Строковый тип данных Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 7 23.04.2009 17:01
Строковый тип данных. Paul Oakenfold Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2009 21:05