Здравствуйте эксперты. Помогите пожалуйста с задачей. Задание Циклически сдвинуть элементы массива целых чисел на K позиций вправо.
Формат входного и выходного файлов
В первой строке содержится N - количество элементов массива и K - количество позиций. Следующая строка содержит N элементов массива. Выходной файл должен содержать N целых чисел, представляющих собой циклически сдвинутый исходный массив. (можно без файлов) Примеры
Приветствую Вас, van! 1. пишешь сдвиг на одну позицию, что элементарно - и вызываешь k раз. 2. быстрый вариант: (псевдокод) p = 1; for i = 1 to n do pn = ((p + k) mod n) + 1; t = a[pn]; a[pn] = a[p] p = pn; end; может тут не все верно но идея, я надеюсь, ясна.
Ответ отправлен: 14.03.2004, 14:02 Отправитель: vitya Отвечает Ayl
Приветствую Вас, van! В принципе, ничего сложного. Основная проблема - завести динамический массив. Вариантов масса, они все уже тут обсуждались, см. например вопрос 429.
Сдвиг - очень просто. Для формирования выходного файла ты даже можешь ничего не сдигать, а просто корректно отобразить массив.
Пусть у нас все числа загружены в массив A. Тогда для вывода воспользуйся таким кодом:
i := n - k + 1; {первый элемент будет здесь} while i < n do begin write (A [i], ' '); Inc (i); end; for i := 1 to n - k do write (A [i], ' ');
Все. Ответ отправлен: 16.03.2004, 15:49 Отправитель: Ayl Отвечает Boriss
Доброе время суток, van! Вот элементарная реализация
Приложение: Ответ отправлен: 15.03.2004, 10:34 Отправитель: Boriss Отвечает samum2000
Приветствую вас,van! Вот кусок кода. Здесь k-количество позиций, n - количество элементов, m-массив. А уж с файлами сам. for j:=1 to k do begin temp:=m[n]; for i:=n downto 2 do begin m[n]:=m[n-1]; end; m[1]:=temp; end; -------------------------- -=Experts helper: testmode=- Ответ отправлен: 15.03.2004, 13:46 Отправитель: samum2000 Отвечает Strory
Доброе время суток, van! Думаю, что комментарии излишни. Всё в приложении.
Приложение: Ответ отправлен: 14.03.2004, 20:04 Отправитель: Strory
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.