Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > можна ли из одного слова сделать другое?


Автор: shef 29.11.2005, 20:57
Я ввожу с клавиатури два слова. И нужно узнать можна ли с второво слова сделать первое.
Если да то вивести "да", а если нет значит "Нет".
Например

марго
рог

"да"

Автор: eskaflone 29.11.2005, 22:36
Код

var a1,a2 : array[0..255]of byte;
..............
readln(s1);
readln(s2);
for i := 1 to length(s1) do inc(a1[ord(s1[i])]);
for i := 1 to length(s2) do inc(s2[ord(s2[i])]);
bb := true;
for i := 0 to 255 do
   if a1[i] < a2[i] then bb := false;
case bb of
 rtue :writeln('can');
 false :writeln('can not');
end;


отвечает можно ли из первого выделить второе.

Автор: darkart 30.11.2005, 19:04
Ну если из марго можно сделать горро то вот:
Код

program Sets;
var
  small,big:set of char;
  i,len:integer;
  str:string;
begin
  small:=[];
  big:=[];
  writeln('Please enter a big string:');
  readln(str);
  len:=Length(str);{чтобы не вычислять в цикле}
  for i:=1 to len do
    big:=big+[str[i]];{заполнение множества}
  writeln('Please enter a small string:');
  readln(str);
  len:=Length(str);
  for i:=1 to len do
    small:=small+[str[i]];
  if small*big=small then{если пересечение = маленькому слову}
    writeln('YES!!!')
  else
    writeln('NO!!!');
  readln;
end.

Автор: Rick 30.11.2005, 20:36
Код

uses crt;
var a1,a2:string;
    i:integer;
begin
readln(a1);
readln(a2);
for i:=1 to length(a2) do begin
x:=pos(a2[i],a1);
if x<>0 then
delete(a1,x,1)
else begin
writeln('no');
break;
end;
if i=length(a2) then writeln('yes');
end;
readln;
end.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)