Автор: 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
Когда же люди научаться читать правила, а?
Автор: deman 6.04.2003 13:55
Цитата
Это ты к чему???? ???
В разделе по паскалю, надо и писать на паскале, для дельфи есть другой раздел
Автор: AlaRic 6.04.2003 16:12
Тема "Помогите плиз" в следующий раз будет сразу же удаляться!
Автор: FB 7.04.2003 21:45
TO Reill:
Спасибо за помощь.
To Admins :
-[,простите тупого,я больше так не буду,честно-честно.