Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 24.11.2010, 20:37   #1 (permalink)
Катерина
Новичок
 
Регистрация: 24.11.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Отладить программу, строковый тип данных (Паскаль)

Здраствуйте!Такая задача:Программа должна исключить из строки текст,заключенный в круглые скобки(не считая скобок).Мой исходник:
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!должн ы остаться только внешние скобки!подскажите,что нужно изменить?
Катерина вне форума   Ответить с цитированием

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

Если воспользоваться поиском, то можно найти много полезной информации

Помогите составить программу на турбо паскаль
Помогите отладить программу

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

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

Яндекс

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


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

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




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

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