Лабораторна робота №16 «Задача
про найбільшу спільну підпослідовність»
Задача. Знайти
найбільшу загальну підрядок двох рядків / Turbo Pascal викликали труднощі ці
завдання, сподіваюся на вашу допомогу)
1) Вводяться 2 рядки. Знайдіть їх
найбільшу загальну підрядок.
2) Дано рядок. Виділити підрядок
від першого до другого двокрапки (порожній рядок, якщо менше двох двокрапок).
3) Дано 2 рядки. Видалити з
першого рядка такі символи, які є у другій.
Варіант 1.Код Pascal
uses crt;
var s1,s2,s:string;
i,j,mx:byte;
begin
clrscr;
writeln('Введите
первую строку:');
readln(s1);
writeln('Введите
первую строку:');
readln(s2);
mx:=0;
for i:=1 to length(s1)
do
for j:=i to
length(s1) do
if
(pos(copy(s1,i,j-i+1),s2)>0)and(j-i+1>mx) then
begin
mx:=j-i+1;
s:=copy(s1,i,j-i+1);
end;
if mx=0 then
write('Общих подстрок нет!')
else
writeln('Максимальная общая подстрока:');
write(s);
readln
end.
Варіант 2.Код Pascal
uses crt;
var s,s1:string;
i,k,i1,i2:byte;
begin
clrscr;
writeln('Введите
строку, содержащую двоеточия:');
readln(s);
i1:=pos(':',s);
if i1=0 then
writeln('Двоеточий нет!')
else
begin
i2:=pos(':',copy(s,i1+1,length(s)))+i1;
if i2=0 then writeln('Двух двоеточий нет!')
else
begin
if i2=i1+1 then writeln('Пустая сторока')
else
begin
writeln('Подстрока между первым и вторым
двоеточием:');
writeln(copy(s,i1+1,i2-i1-1));
end;
end;
end;
readln
end.
Варіант 3.Код Pascal
uses crt;
var s1,s2,s:string;
i,k:byte;
begin
clrscr;
writeln('Введите
первую строку:');
readln(s1);
writeln('Введите
первую строку:');
readln(s2);
k:=0;
for i:=length(s1)
downto 1 do
if pos(s1[i],s2)>0
then
begin
k:=1;
delete(s1,i,1);
end;
if k=0 then write('В
первой строке нет символов из второй!')
else
begin
writeln('Удаление символов в первой строке');
write(s1);
end;
readln
end.
Немає коментарів:
Дописати коментар