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

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

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

 
 Ответить  Открыть новую тему 
> Вывод количества перестановок, при перестановках 25 значений массива, программа не считает дальше
leha_fenchenco@mail.ru
сообщение 15.11.2012 13:39
Сообщение #1





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

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


Program perestanowki;

const
mm=100;
var
m,i,j,k,n:integer;
a,p:array[1..mm] of integer;
begin
write('Введите число эл.для перестановки ');
readln(m);
writeln('Введите элементы массива a[1..m]');
for i:=1 to m do
begin
write('Введите ', i, '-й элемент ');
readln(a[i]);
p[i]:=i
end;
for i:=1 to m do write(a[i], ' ');
writeln;
for i:=m-1 downto 1 do
if p[i] < p[i+1] then
begin
n:=p[i];
for j:=m downto i do
if n < p[j] then
begin
p[i]:=p[j]; p[j]:=n;
k := 1;
while i+k < m-k+1 do
begin
n:=p[i+k];
p[i+k]:=p[m+1-k];
p[m+1-k]:=n;
k:=k+1
end;
j:=i
end;
for i:=1 to m do write(a[p[i]]:4);
writeln
end
end.

Как сделать так что б она сохраняла ВСЕ ответы в документ, и не тормозилась на первых 20тыс.
Заранее спасибо. И ещё, по моему у вас сполера не работаею, или Я не так пишу
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 15.11.2012 15:06
Сообщение #2


Злостный любитель
*****

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

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


по-моему, в коде косяк
Вот я вижу фрагмент отбмена значений:
p[i]:=p[j]; p[j]:=n;
Но переменная n инициализируется вне цикла, то есть ко второй итерации она может оказаться не равной p[i]

и ещё вы меняете j внутри цикла по j, это неправильно

и используйте тэг [ code ] [ /code]


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
leha_fenchenco@mail.ru
сообщение 15.11.2012 15:09
Сообщение #3





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

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


было б не плохо если вы написали текст исправленной проги
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 16.11.2012 11:10
Сообщение #4


Злостный любитель
*****

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

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


Что за алгоритм вы пытались реализовать?
Почему не используете отступы?

Ваша программа в Дельфи даже не компилируется, потому что Дельфи запрещает менять управляющие переменные цикла внутри цикла.

j:=i внутри цикла по j от m до i. Зачем это? Просто чтобы выйти из цикла преждевременно? Для этого есть слово break;

for i:=1 to m do write(a[p[i]]:4); - и это внутри цикла по i! Вы нарушаете работу цикла. Замените i на j, тогда оно хотя бы скомпилируется. Только показывать все перестановки оно, конечно же, не будет. Просто хотя бы потому, что двойным циклом не получить более n*n вариантов, а надо получить n! (факториал)


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
leha_fenchenco@mail.ru
сообщение 17.11.2012 12:23
Сообщение #5





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

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


получается нужно заменить i на j. но все перестановки все равно не выдаст...Как сделать так что б выдал все перестановки.

P.S. в АВСпаскале запускается и работает
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 17.11.2012 14:22
Сообщение #6


Профи
****

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

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


Использовать рекурсию, такой ответ вас удовлетворит?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 17.11.2012 14:37
Сообщение #7


Злостный любитель
*****

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

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


Или алгоритм Дейкстры.
Вы ведь его попытались реализовать?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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