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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tecknogleb
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 35
#1

Кольцевой сдвиг в массиве - C++

16.12.2012, 21:01. Просмотров 450. Ответов 6
Метки нет (Все метки)

Объясните как работает и как примерно делать не понимаю сам((( нашел пример,но не знаю что делают некоторые переменные + некоторые моменты
у самого задание такое:Дан массив действительных чисел размером N и целое число К. Если в исходном массиве чисел больше чем К, то в исходном массиве выполнить кольцевой сдвиг его элементов так, чтобы первый максимальный элемент этого массива оказался на K-ом месте. Кольцевой сдвиг массива выполняется всеми его элементами так, что элементы “выталкиваемые” из массива в одну сторону занимают освободившиеся место с другой стороны. Если число К больше или равно числу элементов в исходном массиве, то создать новый массив, как копию исходного массива, имеющего в качестве первого элемента число K.
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
#include <iostream>
#include <conio.h>
using namespace std;
 
 
void rotor(int *a,int k,int len)
{
    // Создаем и инициализиуем временный массив
    int *m=new int[len]; for(int i=0;i<10;i++) m[i]=0;
    //Копируем в него заднюю часть вращаемого
    memcpy(m,&a[k],sizeof(int)*(len-k));
    //Потом переднюю часть
    memcpy(&m[len-k],&a[0],sizeof(int)*(k));
    //И возвращаем модифицированное назад
    memcpy(a,m,sizeof(int)*(len));
    // убирая мусор
    delete[] m;
}
 
int a[10];
 
int _tmain(int argc,int _TCHAR,int *argv[])
{
    //Создаем массив
    for(int i=0;i<10;i++) 
        a[i]=i;
    for(int i=0;i<10;i++) 
        cout << a[i] << endl;
    // Вращаем его сдвигая первые три элемента
    rotor(&a[0],3,10);
    //Выводим массив
    for(int i=0;i<10;i++) 
        cout << a[i]<< endl;
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 21:01     Кольцевой сдвиг в массиве
Посмотрите здесь:

Кольцевой сдвиг в массиве C++
Сдвиг в динамическом массиве C++
C++ Как происходит циклический сдвиг (как сдвинуть элементы в массиве)
C++ Выполнить кольцевой сдвиг элементов массива
Циклический сдвиг в двумерном динамическом массиве C++
C++ Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции
Выполнить кольцевой сдвиг элементов массива так чтобы его первый максимальный элемент оказался на k-том месте C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12671 / 7179 / 801
Регистрация: 27.09.2012
Сообщений: 17,707
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:08     Кольцевой сдвиг в массиве #2
так тут везде комментарии.
Tecknogleb
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 35
16.12.2012, 21:14  [ТС]     Кольцевой сдвиг в массиве #3
я не понимаю что делает переменная "Len" и мне интересно как можно это делать без строк
Croessmah
Модератор
Эксперт CЭксперт С++
12671 / 7179 / 801
Регистрация: 27.09.2012
Сообщений: 17,707
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:20     Кольцевой сдвиг в массиве #4
Переменная len - размер массива.
В трех memcpy происходит следущее, при k=2
Кольцевой сдвиг в массиве
Tecknogleb
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 35
16.12.2012, 21:23  [ТС]     Кольцевой сдвиг в массиве #5
а не можете мне ее переписать без использования строк? или без этого нельзя?
Croessmah
Модератор
Эксперт CЭксперт С++
12671 / 7179 / 801
Регистрация: 27.09.2012
Сообщений: 17,707
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:25     Кольцевой сдвиг в массиве #6
Цитата Сообщение от Tecknogleb Посмотреть сообщение
а не можете мне ее переписать без использования строк? или без этого нельзя?
Какие строки? Где здесь строки?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 21:38     Кольцевой сдвиг в массиве
Еще ссылки по теме:

Работа с битами. Сдвиг бит в массиве переменных. О как C++
Организовать произвольный циклический сдвиг в массиве C++
В заданном одномерном массиве осуществить циклический сдвиг C++
C++ Каким образом осуществить циклический сдвиг на К элементов вправо в массиве?
C++ Сдвиг ячейки памяти в массиве с вычитанием указателей

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

Или воспользуйтесь поиском по форуму:
Tecknogleb
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 35
16.12.2012, 21:38  [ТС]     Кольцевой сдвиг в массиве #7
простите,я немного ошибся(( новичек в этом деле. посмотрел на слово "roter" и подумал не то. простите еще раз
Yandex
Объявления
16.12.2012, 21:38     Кольцевой сдвиг в массиве
Ответ Создать тему
Опции темы

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