IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите отредактировать программу., Спасибо большое кто поможет
Bart2000
сообщение 7.02.2012 0:17
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Даниил

Репутация: -  0  +


Нужно отредактировать имеющеюся программу. Вообщем суть в том что пользователь вводить число букв. буквы программа сама берёт рандомные и поставить все эти буквы во все возможные варианты. Ответ записать в текстовый документ. Вот программа только она делает все тоже самое только с цифрами и не выводит в текстовый документ.
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.

Спасибо заранее!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 7.02.2012 1:04
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


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

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.
Вывод в файл сам доделай...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"