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

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

Восстановить пароль Регистрация
 
Tecknogleb
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 35
16.12.2012, 21:01     Кольцевой сдвиг в массиве #1
Объясните как работает и как примерно делать не понимаю сам((( нашел пример,но не знаю что делают некоторые переменные + некоторые моменты
у самого задание такое:Дан массив действительных чисел размером 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11824 / 6803 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:08     Кольцевой сдвиг в массиве #2
так тут везде комментарии.
Tecknogleb
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 35
16.12.2012, 21:14  [ТС]     Кольцевой сдвиг в массиве #3
я не понимаю что делает переменная "Len" и мне интересно как можно это делать без строк
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11824 / 6803 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11824 / 6803 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 21:25     Кольцевой сдвиг в массиве #6
Цитата Сообщение от Tecknogleb Посмотреть сообщение
а не можете мне ее переписать без использования строк? или без этого нельзя?
Какие строки? Где здесь строки?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 21:38     Кольцевой сдвиг в массиве
Еще ссылки по теме:

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

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

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

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