Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 329
от 30.03.2007, 02:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 236, Экспертов: 56
В номере:Вопросов: 1, Ответов: 1


Вопрос № 79607: Здравствуйте, уважаемые эксперты! Нам задали по информатике такое задание: сгенерировать все перестановки массива при любом заданном n. ПОжалуйста, помогите сделать лабораторную!....:) SOS:) Может быть на каком нибудь сайте омжно все это скач...

Вопрос № 79.607
Здравствуйте, уважаемые эксперты! Нам задали по информатике такое задание: сгенерировать все перестановки массива при любом заданном n.
ПОжалуйста, помогите сделать лабораторную!....:) SOS:)
Может быть на каком нибудь сайте омжно все это скачать?...в готовом виде....
Спасибо ВСЕМ!!!!
С уважением, Галя.
Отправлен: 24.03.2007, 12:09
Вопрос задала: Галя (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Устинов Сергей
Здравствуйте, Галя!

При любом заданном n это конечно весело :). Предлагаю ограничить пожелания каким-то разумным числом :). (при проверке программы не советую выбирать размер массива 10 и больше - будете ОЧЕНЬ ДОЛГО ждать окончания работы программы, так как в таком случае возможно 3628800 вариантов перестановок.)

program Project1;
const n=4; {размер массива - ограничен только параметрами компьютера, но советую больше 9 не выбирать...}
label 1;
var i,v,y,t,c:longint;
m,o:array[1..n] of integer;
otw:boolean;

{Собственно процедура получения следующей перестановки}
procedure perest(u:integer);
begin
o[u]:=o[u]+1;
if o[u]>n then begin
o[u]:=1;
perest(u-1);
end;
end;

begin
{Вводим содержимое массива}
for i:=1 to n do begin
write(i,'-e chislo =');
o[i]:=i;
readln(m[i]);
end;
t:=1;
{Считаем количество возможных перестановок}
for c:=1 to n do t:=t*c;
writeln; c:=1;
for c:=1 to t do begin
{выводим текущую перестановку}
for i:=1 to n do write(m[o[i]],' ');
writeln;
{получаем следующую перестановку}
1: perest(n);
{проверяем, если в перестановке используется больше одного раза один и тот же элемент массива, то идем опять получать перестановку}
for v:=1 to n-1 do
for y:=v+1 to n do if o[v]=o[y] then goto 1;
end;
{Ну и в конце выводим общее количество разных перестановок.}
writeln('Kolichestvo perestanovok=',t);
readln;
end.

Будут вопросы - обращайтесь!
Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов Сергей (статус: Практикант)
Ответ отправлен: 24.03.2007, 16:01
Оценка за ответ: 5
Комментарий оценки:
Огромное СПАСИБО!!!!
Работа выполнена очень хорошо, быстро!
Вы мне очень помогли!
Даже комментарии есть! Несомненно ВЫСШИЙ БАЛЛ!!!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: support@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное