Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 256
от 17.03.2004, 06:50

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 432
Отправлено ответов: 1582
Активность: 366.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.8
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.56
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 154.74
URL: Программирование на Паскале
[Подробней >>]
 
samum2000
Статус: Профессиональный
Общий рейтинг: 131.47
[Подробней >>]
Strory
Статус: Доверительный
Общий рейтинг: 156.86
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 431. Здравствуйте эксперты. Помогите пожалуйста с задачей. Задание Циклически сдвинуть элементы массива ... (ответов: 5)

Вопросов: 1, ответов: 5


 Вопрос № 431

Здравствуйте эксперты. Помогите пожалуйста с задачей.
Задание
Циклически сдвинуть элементы массива целых чисел на K позиций вправо.

Формат входного и выходного файлов

В первой строке содержится N - количество элементов массива и K - количество позиций.
Следующая строка содержит N элементов массива.
Выходной файл должен содержать N целых чисел, представляющих собой циклически сдвинутый исходный массив. (можно без файлов)
Примеры

ввод 5 2
1 2 3 4 5

вывод 4 5 1 2 3



Вопрос отправлен: 14.03.2004, 03:14
Отправитель: van

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Приветствую Вас, 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (29)
C / C++ (22)
Perl (4)
Builder / Delphi (20)
Pascal (23)
Basic / VBA (8)
Java / JavaScript (8)
PHP (14)
Криптография (8)
WinAPI (16)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (42)
Windows NT/2000/XP (59)
"Железо" (35)
Поиск информации (22)
Администратору
Windows NT/2000/XP (29)
Linux / Unix (14)
Юристу
Гражданское право (13)
Семейное право (12)
Трудовое право (12)
КоАП (9)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное