Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2010, 21:15   #1
denis2010
Пользователь
 
Регистрация: 16.01.2010
Сообщений: 11
Вопрос программа в паскале

Помогите пожалуйста, как расположить элементы массива в обратном порядке, без использования доп. массива???
Дан некоторый массив: например x:array[1..33] как как расположить элементы массива в обратном порядке?
denis2010 вне форума Ответить с цитированием
Старый 16.01.2010, 21:30   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

цикл i от 1 до N/2
поменять значения элементов i и N-i+1
Namolem вне форума Ответить с цитированием
Старый 16.01.2010, 21:34   #3
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Код:
for i:=1 to n div 2 do
begin
p:=a[i];
a[i]:=a[n];
a[n]:=p;
dec(n);
end;
Базиля вне форума Ответить с цитированием
Старый 16.01.2010, 21:39   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Namolem
Код:
i и N-i+1
так не будет работать правильно

Последний раз редактировалось Базиля; 16.01.2010 в 21:49.
Базиля вне форума Ответить с цитированием
Старый 16.01.2010, 22:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Цитата:
Код:
i и N-i+1
так не будет работать правильно
почему это не будет?! Будет!
при i=1 выражение N-i+1 = N
при i=2 — выражение = N - 1
и т.д.
в чём проблема то?
в вот изменять количество элементов в массиве (как это сделали Вы - dec(n)) я лично категорически не рекомендую! ведь n ещё потребуется(например, чтобы выдать полученный массив), а там уже мусор... ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.01.2010, 22:45   #6
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
в вот изменять количество элементов в массиве (как это сделали Вы - dec(n)) я лично категорически не рекомендую! ведь n ещё потребуется(например, чтобы выдать полученный массив), а там уже мусор... ;(
не подумал об этом, спасибо!
тогда вот так:
Код:
l:=n;
for i:=1 to n div 2 do
begin
p:=a[i];
a[i]:=a[l];
a[l]:=p;
dec(l);
end;
Цитата:
почему это не будет?! Будет!
при i=1 выражение N-i+1 = N
при i=2 — выражение = N - 1
да все в порядке вставлял в код просто, проверял, не правильно делал перестановку, щас опять попробовал, все в порядке
Базиля вне форума Ответить с цитированием
Старый 16.01.2010, 22:48   #7
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

а мне больше нравится в такой форме

Код:
i=1; //первый элемент в массиве
j=n; // последний элемент в массива
while (i<j) do Begin
  temp = a[i];
  a[i] = a[j];
  a[j] = temp;
  i = i+1;
  j = j-1;
End;
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Старый 17.01.2010, 00:07   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

val_nnm, угу, так тоже можно. но по сути это ничем не отличается от метода предложенного выше...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.01.2010, 00:52   #9
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

А если у нас целочисленный массив то можно ещё сделать так

Код:
  i:=1;
  j:=n;
  while (i<j) do Begin
    a[i] := a[i] xor a[j];
    a[j] := a[i] xor a[j];
    a[i] := a[i] xor a[j];
    i := i+1;
    j := j-1;
  End;
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Старый 17.01.2010, 01:11   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
если у нас целочисленный массив то можно ещё сделать так
можно. но не нужно! и вообще использование подобных "хакерских методов" без крайней необходимости НЕ ЖЕЛАТЕЛЬНО!!
впрочем, это дело вкуса...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на паскале Absent Помощь студентам 3 28.05.2009 17:14
Программа в паскале )) alien608 Паскаль, Turbo Pascal, PascalABC.NET 2 29.01.2009 18:41
Программа в паскале Batonchik Помощь студентам 9 18.01.2009 15:07
Программа в паскале Krjak Помощь студентам 2 15.10.2008 21:56
программа в Паскале vitekbest Помощь студентам 4 17.12.2007 08:33