Заданы две строки А и В. Можно ли переставить буквы в одном из слов так , чтобы слова...

0 голосов
47 просмотров

Заданы две строки А и В. Можно ли переставить буквы в одном из слов так , чтобы слова стали одинаковыми? формат входных данных
первая строка входного файла содержит строку A состоящую из строчных буев английского алфавита (1<=|B|<=1000).<br> вторая строка содержит строку B в таком же формате
формат выходных данных


Информатика (17 баллов) | 47 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
Общее решение, позволяющее удалять из строк любой "мусор"

// PascalABC.Net 3.0, сборка 1066
procedure CheckString(var s:string; var n:integer);
var
  i:integer;
begin
  i:=Length(s);
  while i>0 do begin
    if not(s[i] in ['a'..'z']) then Delete(s,i,1);
    Dec(i)
  end;
  n:=Length(s)
end;

var
  s1,s2:string;
  i,p,n1,n2:integer;
begin
  Write('Введите первую строку: '); Readln(s1);
  CheckString(s1,n1);
  if n1=0 then Writeln('Введенная строка не содержит допустимых символов')
  else begin
    Write('Введите вторую строку: '); Readln(s2);
    CheckString(s2,n2);
    if n2=0 then Writeln('Введенная строка не содержит допустимых символов')
    else
      { теперь обе строки содержат только маленькие латинские буквы }
      if n1=n2 then begin
        for i:=1 to n1 do begin
          p:=Pos(s1[i],s2);
          if p=0 then Break
          else Delete(s2,p,1)
          end;
        if Length(s2)=0 then Writeln('Решение имеется')
        else Writeln('Решения нет')
        end
      else
        Writeln('Решения нет');
    end
end.

Тестовое решение:
Введите первую строку: this is my own deal!
Введите вторую строку: Тест: *is  now=l2ead  my   sthi?
Решение имеется

Также имеется современное решение, которому пока что в школах не учат:
// PascalABC.Net 3.0, сборка 1066
begin
  var s1:=ReadString('Введите первую строку: ').Where(x->x in ['a'..'z']);
  if s1.Count=0 then
    Writeln('Введенная строка не содержит допустимых символов')
  else begin
    var s2:=ReadString('Введите вторую строку: ').Where(x->x in ['a'..'z']);
    if s2.Count=0 then
      Writeln('Введенная строка не содержит допустимых символов')
    else
      if s1.Except(s2).Count>0 then Writeln('Решения нет')
      else Writeln('Решение имеется')
    end
end.

(142k баллов)
0 голосов

//Pascal ABC.NET Версия 2.2 Сборка 790
var a,b:string;
i,j,k:integer;
begin;
readln(a);
readln(b);
for i:=1 to length(a) do
   begin;
     for j:=1 to length(b) do
      begin;
        if a[i]=b[j] then
          begin;
            delete(b,j,1);
            inc(k);
          end;
       end;
end;
if k=length(a) then writeln('Да') else writeln('Нет');
end.

Пример ввода:
abc
cba
Пример вывода:
Да

(38.6k баллов)