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

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

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

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

Отладить программу, строковый тип данных (Паскаль)

Катерина

Ученик
Регистрация
24 Ноя 2010
Сообщения
6
Реакции
0
Баллы
0
Отладить программу, строковый тип данных (Паскаль)

Здраствуйте!Такая задача:Программа должна исключить из строки текст,заключенный в круглые скобки(не считая скобок).Мой исходник:
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!должн ы остаться только внешние скобки!подскажите,что нужно изменить?
 
подскажите,что нужно изменить?
Могу предложить такой вариант:
Код:
Program Pr1;
uses crt;
var
 s:string;
 i,i1,d:byte;
BEGIN
 clrscr;
 writeln('Vvedite stroku:');
 readln(s);
 i:=0;
 Repeat
  Repeat
   Inc(i);
  Until (S[i]='(') or (i=Length(S));
  If (S[i]='(') and (i<Length(S)) then
   begin
    i1:=i;
    Repeat
     Inc(i);
    Until ((i<Length(S)) and (S[i]=')') and (S[i+1]<>')')) or (i=Length(S));
    If (i<Length(S)) or ((i=Length(S)) and (S[i]=')')) then
     begin
      d:=i-i1-1;
      Delete(S,i1+1,d);
      Dec(i,d);
     end;
   end;
 Until i=Length(S);
 WriteLn(S);
 ReadLn;
END.

Работает во всех случаях. Проверено.
 
Назад
Сверху