помогите с задачей
Эта программа пока работает так:
Если ввести предложение из одинаковых слов, например: лимон лимон лимон
перестановки будут такие:
лимон лимон лимон
лимон лимон лимон
лимон лимон лимон
а надо вывести только лимон лимон лимон (так как одинаковые перестановки не выводить)
вот сама задача ее надо доделать правильно
uses
SysUtils;
type Combination=array [1..100] of integer;
var N: byte;S:string;p:integer;
j,i:integer;
x: combination;
var a:array[0..100] of string;
// Перевод из строки
procedure Print;
begin
for i:=1 to n do
write(' ',a[x]);
writeln;
end;
procedure swap(var d,j:integer);
var x:integer;
begin
x:=d;
d:=j;
j:=x;
end;
procedure generate(k:byte);
var j:integer;
begin
if k=N then
else
for j:=k+1 to n do begin
swap (x[k+1],x[j]);
generate(k+1);
swap (x[k+1],x[j]);
end;
end;
begin
write('vvedite predlogenie: ');readln(s);
s:=s+' '; j:=0;
while copy (s,1,1)=' ' do delete(s,1,1);
while s<>'' do begin
j:=j+1;
while copy (s,1,1)<>' ' do begin
a[j]:=a[j]+copy (s,1,1);
delete (s,1,1);
end;
while copy (s,1,1)=' ' do delete(s,1,1);
end;
N:=j;
for i:=1 to N do x:=i;
generate(0);
readln;
end.
а что здесь не правильно?
предложения с одинаковыми перестановками не должны повторяться, и вывести надо только одно