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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2011, 21:27   #1
cranxx
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 10
Вопрос Сдвинуть элементы массива

Задан массив из К чисел. Сдвинуть элементы массива циклически на n позиций вправо. Как реализовать?
cranxx вне форума Ответить с цитированием
Старый 13.01.2011, 23:12   #2
Onni
Форумчанин
 
Аватар для Onni
 
Регистрация: 28.12.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от cranxx Посмотреть сообщение
Задан массив из К чисел. Сдвинуть элементы массива циклически на n позиций вправо. Как реализовать?
Код:
 
// Циклический сдвиг одномерного массива или строки
 
// итак, нужно преобразовать массив ab в bа. 
// Предположим, что у нас есть функция reverse, 
// переставляющая элементы некоторой части массива в 
// противоположном порядке. В исходном состоянии массив имеет 
// вид ab. Вызвав эту функцию для первой части, получим аrb 
// (прим. редактора:аr - это модифицированная часть a, к которой 
// применили фукнцию перестановки reverse). Затем вызовем ее для 
// второй части: получим аrbr. Затем вызовем функцию для всего 
// массива, что даст (аrbr)r, а это в точности соответствует bа. 
// Посмотрим, как будет такая функция действовать на массив abcdefgh, 
// который нужно сдвинуть влево на три элемента:
// псевдокод: Сдвиг через функцию перестановки reverse   ссылка
// reverse(0, i-1)   /* cba|defgh */
// reverse(i, n-1)   /* cba|hgfed */
// reverse(0, n-1)   /* defgh|abc */
 
#include <iostream>
#include <time.h>
 
 
#define   randomize() srand(time(NULL))
#define   SIZE        10
 
using namespace std;
void Reverse(int *begin, int *end)
{ 
        int temp;
        while (end>begin)
        {
                temp = *begin;
                *begin = *end;
                *end = temp;
                begin++; end--;
        }
} // end Reverse
 
int main()
{
        int A[SIZE];
        int i;
 
        for (i=SIZE; --i>=0;)
                A[i]=i; //rand()%10;
 
        cout<<"A"<<endl;     /// вывод
        for (i=0; i<SIZE; i++)
                cout<<A[i]<<' ';
        cout<<endl;
 
        //////////////////////////////////////////////////////////////////////////
        // сам циклический сдвиг на i элементов
        cout<<"number shift: "; cin>>i;
        Reverse(&A[0], &A[i-1]);
        Reverse(&A[i], &A[SIZE-1]);
        Reverse(&A[0], &A[SIZE-1]);
        //////////////////////////////////////////////////////////////////////////
 
        cout<<"revA"<<endl;     /// вывод
        for (i=0; i<SIZE; i++)
                cout<<A[i]<<' ';
 
        cout<<endl; system("PAUSE");
        return 0;
} // end main
Текст программы не мой, позаимствовла с др. сайта.
Onni вне форума Ответить с цитированием
Старый 14.01.2011, 02:23   #3
Onni
Форумчанин
 
Аватар для Onni
 
Регистрация: 28.12.2008
Сообщений: 134
По умолчанию

Ещё вот что могу посоветовать:

http://www.cyberforum.ru/pascal/thread133142.html

работа с массивами, только все коды на делфи. Ну я думаю разберетесь.

PS: Модератору - возможно ссылка вставлена не по правилам форума, но при попытке вставить ссылку появляющееся мини-окно виснет... так что я не при делах.
Onni вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклически сдвинуть элемент массива влево sergeyjm4 Общие вопросы C/C++ 0 05.01.2011 23:44
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
Циклическо сдвинуть элементы массива на K позиций влево, тоже сделать, испульзуя динамические массивы Fimogen Общие вопросы C/C++ 10 03.11.2007 11:19