Помощь - Поиск - Пользователи - Календарь
Полная версия: Нужно отредактировать программу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Bart2000
Условие: Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их название вводит пользователь. Ввод вывод в текстовый файл.
Есть программа на она делает перестановку не со словами а с цифрами, надо поправит.
 type
mas=array [1..100] of integer;
var
n,i:integer;
a,p:mas;
procedure vivod(n:integer; var p:mas);
var i,j,imax:integer;
begin
imax:=1; {Определяем количество блоков в разбиении}
for i:=1 to n do
if p[i]>imax then imax:=p[i];
for i:=1 to imax do {Проходим по всем блокам данного разбиения}
begin
write('{'); {Выводим на экран i-й блок}
for j:=1 to n do {Просматриваем все элементы}
if p[j]=i then write(a[j],' '); {Если элемент принадлежит i-му блоку то выводим его на экран}
write('} ') {Блок напечатан}
end;
writeln; {Разбиение напечатано}
end;
procedure razb(i, j: integer); {i- рассматриваемый элемент}
var l: integer; {j- количество блоков в разбиении}
Begin {р - массив пометок, принадлежности к блоку разбиения}
if i>n then vivod(n, p) {Если рассматриваемый элемент больше, чем общее число элементов в множестве, то разбиение сформировано, выводим его}
else
for l := 1 to j do {Просматриваем все блоки}
begin
p[i] := l; {Ставим i-й элемент в l-й блок, l=1,..,j}
if l=j then razb(i+1, j+1) {Если i-й элемент вставили в последний блок, то переходим к следующему элементу i+1 и добавляем новый блок j+1}
else razb(i+1, j) {в противном случае переходим к следующему элементу i+1 не добавляя новый блок}
end;
end;
begin
writeln('Vvedite kol. el. v mnoj');
readln(n);
writeln('vvedite elementi mnoj');
for i:= 1 to n do
read(a[i]);
razb(1,1);
readln;

end.

IUnknown
Опиши массив A не как mas, а как массив строк и читай туда названия цветов, тогда при выводе у тебя будут печататься названия, а не числа.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.