profile
Опубликовано 6 лет назад по предмету Информатика от dani2000kz

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

  1. Ответ
    Ответ дан Gleb1Kosyrev
    //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
    Пример вывода:
    Да
  2. Ответ
    Ответ дан Аккаунт удален
    Общее решение, позволяющее удалять из строк любой "мусор"

    // 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.

Самые новые вопросы