Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Удаление элемента из строки

Автор: FB 5.04.2003 11:04

Помогите пожалуйста доделать лабу.
Нужно сделать прогу, которая удаляет из входной строки YS элемент,находящийся перед последовательностью символов, заданных переменной SX(для всех вхождений SX).
Я написал так:

Код
            Var
      Kz,Np,J,DSX: Integer;
      YS,SX,UYS,KY: String;
           begin
      SX:=Edit1.Text;
      YS:=Edit2.Text;
      UYS:=Edit2.Text;
      DSX:=Length(SX);
      Np:=Pos(SX,YS);
      Kz:=0;
      UYS:=YS;
      J:=Np;
      While Np<>0 Do Begin
      Delete(YS,J-1,1);
      Delete(UYS,Np-1,DSX+1);
      Np:=Pos(SX,UYS);
      J:=Np+DSX;            
      Kz:=Kz+1;
      end;
      Edit3.Text:=YS;
      Str(Kz,Ky);
      Edit4.Text:=KY;
          end;
          end.


где Np-позиция SX в YS; UYS-вспомогательная строка; J-вспомогательная переменная,отвечающая за
нахождение всех последующих SX в строке YS. Программа правельно удаляет только два заданных символа,а потом начинать действовать неверно.Мне кажется,что проблема в строке J:=Np+DSX.
Помогите пожалуста исправить программу.
Спасибо.

Автор: reill 5.04.2003 12:05

Я так понимаю ты писал свою лабу на Дельфи....
Я исправил твои ошибки, но пример привожу для паскаля, для того что бы использовать
его на Дельфи тебе нужно переправить ввод и вывод данных..
Заменить readln и writeln на что-то типа:

Код
SX:=Edit1.Text;
YS:=Edit2.Text;

Edit3.Text:=YS;

Ну я думаю разберешься....
Вот прога:

Код
program help;
Var
 J,DSX,dYS: Integer;
 YS,SX: String;
 begin
 readln(SX);
 readln(YS);
 DSX:=Length(SX);
 DYS:=length(YS);
 for j:=1 to dys-dsx Do
 Begin
if copy(ys,j,dsx)=sx then
 Delete(YS,j,dsx);
 end;
 writeln(YS);
     end.

На самом деле все намного проще и короче=)))

Автор: AlaRic 5.04.2003 13:12

Когда же люди научаться читать правила, а?

Автор: reill 6.04.2003 13:44

Это ты к чему???? ???

Автор: deman 6.04.2003 13:55

Цитата
Это ты к чему???? ???

В разделе по паскалю, надо и писать на паскале, для дельфи есть другой раздел

Автор: AlaRic 6.04.2003 16:12

Тема "Помогите плиз" в следующий раз будет сразу же удаляться!

Автор: FB 7.04.2003 21:45

TO Reill:
Спасибо за помощь.
To Admins :
-[,простите тупого,я больше так не буду,честно-честно.

Автор: AlaRic 7.04.2003 21:54

Поверим на слово!    ;)