Форум программистов, компьютерный форум CyberForum.ru

Циклический сдвиг массива - C++

Восстановить пароль Регистрация
 
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
14.03.2013, 14:22     Циклический сдвиг массива #1
Задание такое. Нужно циклически сдвинуть массив на К элементов вправо. Я сделал сдвиг, только он выбирает К-ый элемент с конца, а мне нужно сначала, (например массив 3456789 выбираем К-ый элемент 3, получаем 5678934)
вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
 
int main()
{   setlocale (LC_ALL, "Russian");
 
const int n = 10;
int a[n],i,j,k,tmp;
 
// Ввод массива
for (i = 0; i < n; i++)
{
    cout<<"Введите элементы массива: ";
    cin>>a[i];
}
 
cout<<"Введите k: ";
cin>>k;
 
// Перестановка
for(i=0; i<k; i++)
{
    for(j=n-1; j>=0; j--)
    {
        if (j==n-1)
            tmp=a[n-1];
        else
            a[j+1]=a[j];
    }
    a[0]=tmp;
}
 
// Вывод рез-та
cout<<"Результат: "<<endl;
for (i = 0; i < n; i++)
{
    cout<<a[i]<<' ';
}
 
cout<<endl;
system("pause");
return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2013, 14:22     Циклический сдвиг массива
Посмотрите здесь:

C++ циклический сдвиг массива
Циклический сдвиг массива C++
Циклический сдвиг элементов массива C++
Циклический сдвиг двумерного массива C++
C++ Циклический сдвиг массива влево
Циклический сдвиг элементов массива C++
циклический сдвиг массива C++
C++ Циклический сдвиг массива на k элементов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
18.03.2013, 10:15     Циклический сдвиг массива #2
Вот Вам рабочий вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <vector>
 
using namespace std;
 
void shift1( vector<int>& v )
{
   int n = v.size() - 1;
   
   int t = v[n];
   
   while( n-- )
   {
      v[n+1] = v[n];
   }
   
   v[0] = t;
}
 
void cyclicShift( vector<int>& v, int k )
{
   for( k = k % v.size(); k>0; --k )
   {
      shift1( v );
   }
}
 
void print( vector<int>& v )
{
   for( auto& i : v )
      cout << i << ",";
   cout << endl;
}
 
int main() {
   
   vector<int> v = { 4,3,2,1 };
   
   print( v );
   
   cyclicShift( v, 5 );
    
   print( v );
   
   return 0;
}
Разбирайтесь.
Yandex
Объявления
18.03.2013, 10:15     Циклический сдвиг массива
Ответ Создать тему
Опции темы

Текущее время: 12:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru