Задача 8 урок 16

Задача 8 урок 16

Проверить можно ли строки из m перестановкой символов получить строку n.

var   m, n: string;
i, t, h: Integer;
begin
 t:=0; //количество совпадений
 writeln('Vvedite stroku');
 readln(m);
 writeln('Vvedite variantperestanovki');
 readln(n);
   for i:=1 to length(m) do
     begin
     for h:=1 to length(n) do
       if m[i] = n[h] then
         begin
           inc(t);
           n[h]:='`';
           break;
         end;
     end;
   if t = length(m)then
     writeln('YAS!')
   else
     writeln('NO!');
 readln();
end.
vedro-compota's picture

подумать как решить без замен

_____________
матфак вгу и остальная классика =)

var   m, n: string;
v: char;
i, t, h: Integer;
begin
  //v - переменная временного хранения
 t:=0; //количество совпадений
 writeln('Vvedite stroku');
 readln(m);
 writeln('Vvedite variant perestanovki');
 readln(n);
   for i:=1 to length(m) do
     begin
     for h:=1 to length(n) do
       if m[i] = n[h] then
         begin
           inc(t);
           v:=n[h];
           n[h]:=n[length(n)];
           n[length(n)]:=v;
           break;
         end;
     end;
   if t = length(m)then
     writeln('YAS!')
   else
     writeln('NO!');
 readln();
end.
vedro-compota's picture

нельзя ли просто посчитать число вхождения каждого элемента в строку и сделать вывод?

_____________
матфак вгу и остальная классика =)

var   m, n: string;
i, t, t2, h, j: Integer;
flag: boolean;
begin
 flag:=true;
 t:=0; //количество совпадений
 t2:=0;
 writeln('Vvedite stroku');
 readln(m);
 writeln('Vvedite variant perestanovki');
 readln(n);
 if length(m)=length(n) then //если длины строк равны
   begin
   for i:=1 to length(m) do //берем элемент строки
     begin
       for h:=1 to length(m) do//смотрим солько его раз в строке
         if m[i] = m[h] then
           inc(t);         //считаем (как минимум 1 совпадение)
       for j:=1 to length(n) do
         if n[j] = m[i] then
           inc(t2);         //считаем совпадения по n массиву
       if t<>t2 then
         begin
           flag:=NOT flag;
           break;
         end;
       end;
   end;
 else
   flag:=NOT flaag;
 if flag then
   writeln('YAS!')
 else
   writeln('NO!');
 readln();
end.
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)