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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2017, 01:03   #1
Anotherknt
 
Регистрация: 22.05.2014
Сообщений: 4
По умолчанию [РЕШЕНО][Pascal] В данном линейном массиве поменять местами пары элементов, индексы которых при делении на 4 дают в остатке соответственно 1 и 0.

В данном линейном массиве A[1..N] поменять местами пары элементов, индексы которых при делении на 4 дают в остатке соответственно 1 и 0. (Например, для массива 0, 1, 2, 3, 4, 5, 6, 7, 8 получим в результате 3, 1, 2, 0, 7, 5, 6, 4, 8.)
Прошу помочь не могу разобраться!

Решение в следующем сообщении

Последний раз редактировалось Вадим Мошев; 12.05.2018 в 13:14.
Anotherknt вне форума Ответить с цитированием
Старый 22.04.2017, 01:29   #2
supervine
 
Регистрация: 21.04.2017
Сообщений: 8
По умолчанию

Значит надо поменять местами ячейки с индексами 1-4, 5-8 и тд...
То есть в каждой четверке поменять местами первую и последнюю ячейки.

Где то так:
Код:
for i:=0 to (n div 4)-1 do
 begin
  temp:=arr[i*4+1];
  arr[i*4+1]:=arr[i*4+4];
  arr[i*4+4]:=temp;
 end;

Последний раз редактировалось supervine; 22.04.2017 в 01:31.
supervine вне форума Ответить с цитированием
Старый 22.04.2017, 10:07   #3
Anotherknt
 
Регистрация: 22.05.2014
Сообщений: 4
По умолчанию

Спасибо, все заработало!

Не подскажешь, можно решить данную задачу через операцию mod?

Последний раз редактировалось Вадим Мошев; 22.04.2017 в 11:57.
Anotherknt вне форума Ответить с цитированием
Старый 22.04.2017, 12:10   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Anotherknt Посмотреть сообщение
Не подскажешь, можно решить данную задачу через операцию mod?
Можно. Но вам дали наиболее оптимальный способ. Если всё же хотите через mod, во вот вам такой шаблон:
Код:
indexesAmount := 0;
for i:=1 to N do begin

  if i mod 4 = 0 then begin
    {запомнить этот индекс}
    inc(indexesAmount)
  end;

  if i mod 4 = 1 then begin
    {запомнить этот индекс}
    inc(indexesAmount)
  end;

  if indexesAmount = 2 then begin
    {обменять местами элементы массива с такими индексами}
    indexesAmount := 0
  end;
end;
Вадим Мошев вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++. Даны натуральные числа q1,...,qn. Найти те члены аi последовательности q1,...,qn, которые при делении на 7 дают остаток 1,2 или 5. Nyo Помощь студентам 3 04.09.2016 08:42
В двумерном массиве, состоящем из целочисленных элементов, поменять местами T1wka Паскаль, Turbo Pascal, PascalABC.NET 7 14.11.2014 10:05
DELPHI.поменять индексы местами в одномерном массиве dozimetrist Помощь студентам 9 19.11.2013 00:20
Выведите на экран натуральные числа от 1 до 100, которые при делении на 6 дают в остатке 4 и их количество(цифр) svob Паскаль, Turbo Pascal, PascalABC.NET 9 09.12.2012 20:16
Даный целые числа, заменить нулями члены, модуль которых при делении на p даёт в остатке q |Dima| Общие вопросы C/C++ 7 11.07.2011 01:14