даны массивы A(N), B(M) и натуральные числа K, L переместить элементы массива А вправо на К позицийа элементы массива В вправо на L позиций. Перемещение элементов массива вправо на заданное кол-во позиций с использованием вспомогательного массива оформить в виде подпрограммы
помогите плиз. Спасибо за ранее
Lapp
31.03.2009 4:32
Цитата(frogg @ 30.03.2009 21:19)
даны массивы A(N), B(M) и натуральные числа K, L переместить элементы массива А вправо на К позицийа элементы массива В вправо на L позиций. Перемещение элементов массива вправо на заданное кол-во позиций с использованием вспомогательного массива оформить в виде подпрограммы
помогите плиз. Спасибо за ранее
А что делать с освобождающимися элементами массивов? Или ты имеешь в виду циклическое перемещение?
frogg
31.03.2009 13:06
Цитата(Lapp @ 31.03.2009 1:32)
А что делать с освобождающимися элементами массивов? Или ты имеешь в виду циклическое перемещение?
циклическое
volvo
1.04.2009 15:03
frogg, есть 2 способа циклически сдвинуть массив на 1 элемент вправо или влево. И для этого даже не нужен никакой вспомогательный массив:
способ 1 (пищу для сдвига влево, вправо делается по аналогии): Запоминаешь элемент, который был первым. Начиная со второго и до конца массива (длина ж тебе известна?) переносишь элемент Ai на одну позицию левее: A[i - 1] := A[ i ]. Ну, а потом - устанавливаешь в последний, самый правый элемент, то значение, которое было сохранено ранее из первой (левой) ячейки.
способ 2: запоминаешь первый элемент (это придется делать, никуда от этого не денешься), потом без цикла, одним вызовом процедуры Move переносишь все элементы массива на одну позицию левее:
Move(A[2], A[i], (size - 1)*Sizeof(integer));
(здесь size - размер массива A, а integer - тип элементов массива, если у тебя массивы вещественных чисел - то надо будет поставить другой тип). И потом опять же последнему элементу присвоить сохраненное ранее значение.
Выбирай, что больше нравится. Процедура Move присутствует в Паскале, ее не надо изобретать и реализовывать, она уже есть, только использовать (это так, на всякий случай, информация).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.