пʼятниця, 26 лютого 2016 р.

10 клас. Лабораторна робота №16

Лабораторна робота №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.

Немає коментарів:

Дописати коментар