Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите отредактировать программу.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Bart2000
Нужно отредактировать имеющеюся программу. Вообщем суть в том что пользователь вводить число букв. буквы программа сама берёт рандомные и поставить все эти буквы во все возможные варианты. Ответ записать в текстовый документ. Вот программа только она делает все тоже самое только с цифрами и не выводит в текстовый документ.
type stroka=string;
Var k,a:integer;
procedure perest(n:integer; s:stroka);
{n-элемент, который будет вставляться в строку. На данный момент, в строке n-1 символ}
var i:integer;
st1,st:stroka;
begin
if n=k+1 then {В строке n символов, она сформирована, выводим на экран}
begin
writeln(s); exit;
end
else {В строке меньше n символов}
for i:=1 to n do {Вставляем символ n в строку на i-е место (от 1 до n)}
begin
st:=s; {Копируем строку s во вспомогательную переменную st}
str(n,st1); {Переводим цифру n в строку st1}
insert(st1,st,i); {Вставляем строку st1 в строку st}
perest(n+1,st); {Вызываем процедуру perest для следующей цифры n+1}

end;


end;
Begin {Начало основной программы}
writeln('Введите количкство букв'); readln(k);
perest(1,''); {Изначально вызываем процедуру для элемента 1, вставляем его в пустую строку}
readln;
end.

Спасибо заранее!
IUnknown
А у тебя фактически все остается как и было. Надо только сделать несколько вещей:

1) занести все буквы, которые будут переставляться, в строку (я назвал ее gs)
2) вместо преобразования числа N в строку просто брать N-ый символ этой самой строки gs.

3) ???
4) profit

type stroka=string;
Var
k,a:integer;
gs : stroka;

procedure perest(n:integer; s:stroka);
{n-элемент, который будет вставляться в строку. На данный момент, в строке n-1 символ}
var i:integer;
st:stroka;
ch : char;
begin
if n=k+1 then {В строке n символов, она сформирована, выводим на экран}
begin
writeln(s); exit; { <--- WriteLn надо делать в файл, а не на экран }
end
else {В строке меньше n символов}
for i:=1 to n do {Вставляем символ n в строку на i-е место (от 1 до n)}
begin
st:=s; {Копируем строку s во вспомогательную переменную st}
ch := gs[n];
insert(ch,st,i); {Вставляем символ в строку st}
perest(n+1,st); {Вызываем процедуру perest для следующей цифры n+1}

end;
end;

var i : integer;
Begin {Начало основной программы}
writeln('Введите количество букв'); readln(k);

randomize;
gs := '';
for i := 1 to k do
gs := gs + chr(random(26) + 65); { случайная буква от 'A' до 'Z' }
writeln('s = ', gs); { <--- можешь это убрать, это для теста }

perest(1,'');
readln;
end.
Вывод в файл сам доделай...
Bart2000
Спасибо огромное) Только почему когда ввожу 1 2 3 оно не работает?? rolleyes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.