0 / 0 / 1
Регистрация: 17.11.2015
Сообщений: 12

Осуществить циклический сдвиг элементов одномерного массива на k позиций

18.11.2015, 16:23. Показов 1761. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
работает правильно только если k=1 если больше то сдвиг делает правильно, но когда на место их переносит числа путает их, что не так?

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
#include "stdafx.h" 
#include <ctime>
#include <iostream> 
 
#define SIZE 6
int main()
{
    srand(time(0));
    //const int size = 6;
    int arr[SIZE];
    int k;
    
    for (int i = 0; i < SIZE; i++)
    {
        arr[i] = rand() % 9;
        std::cout << arr[i] << " ";
    }
    printf("\n");
    printf("vvedite chislo: \n");
    scanf_s("%i", &k);
    printf("\n");
    int tmp = arr[SIZE - k];
    for (int i = SIZE + k; i >= 0; i--)
        arr[i + k] = arr[i];
    arr[1] = tmp;
    std::cout << std::endl;
    for (int i = 0; i < SIZE; i++) 
        std::cout << arr[i] << " ";
    getc(0);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2015, 16:23
Ответы с готовыми решениями:

Осуществить циклический сдвиг элементов массива влево на k позиций
Дан массив размера N и число k (0 &lt; k &lt; 5, k &lt; N). Осуществить циклический сдвиг элементов массива влево на k позиций. Гуглю весь день,...

Осуществить циклический сдвиг элементов массива вправо на k позиций
Решаю задачи на сервере одном, задание было &quot;Дан массив размера N ≥ 2 и число k (0 &lt; k &lt; N). Осуществить циклический сдвиг...

Осуществить циклический сдвиг элементов массива влево1|вправо2 на k позиций
Добрый день ребят, очень нужна Ваша помощь. Помогите решить задачу. Дан массив размера N и число k (0&lt;k&lt;5, k&lt;N). Осуществить...

9
 Аватар для mster-doc
16 / 16 / 12
Регистрация: 10.11.2012
Сообщений: 245
18.11.2015, 20:24
Вот так можно сделать
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
#include <iostream> 
#include <conio.h>
 
using namespace std;
 
int main()
{
    int a[] = {4,12,0,34,5};
    
    int k=1;
    
    rotate(a, a+k, a+5);    // а+к - то на сколько нужно сдвинуть 
                                     // а+5  - размер
     
    for(int i=0;i<5;i++)
    {
            cout<<a[i]<<" ";
    }
     
    cout<<endl;
     
    getch();
    return 0;
}
1
Диссидент
Эксперт C
 Аватар для Байт
27711 / 17329 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
01.11.2016, 09:48
Прошу прощения, что залез в такую толщу веков. Но уж если залез, оставляю метку для грядущих поколений. Оба кода - бредовы.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
01.11.2016, 09:53
Функция циклического сдвига массива
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
01.11.2016, 09:54
Осуществить циклический сдвиг элементов массива вправо на k позиций
Функция циклического сдвига массива
0
 Аватар для Babysitter
245 / 139 / 53
Регистрация: 23.11.2015
Сообщений: 394
01.11.2016, 11:10
Цитата Сообщение от Байт Посмотреть сообщение
Оба кода - бредовы.
ну тот парень по крайней мере попробовал использовать std::rotate вместо велосипеда
уже не так уж плохо. если пытаться исправить, должно быть как-то так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    int a[] {4, 12, 0, 34, 5};
    int k = 1;  // shift for
    size_t sz = end(a) - begin(a);
 
    if (k > sz) {
        k = k % sz;
    }
    rotate(begin(a), end(a) - k, end(a));
 
    for (auto i : a) {
        cout << i << " ";
    }
    cout << endl;
}
Добавлено через 29 минут
а, так товарищ просто сдвигал влево, что-то я тогда совсем не понимаю такого грубого наезда.
0
Диссидент
Эксперт C
 Аватар для Байт
27711 / 17329 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
01.11.2016, 15:11
Babysitter, Еще раз повторю. Оба коды - бредовы настолько, что аргументировать неохота. И это не входило в мои планы. Ибо видно и без аргументов. Я просто искал в "нижних подсказках", на чтобы сослаться. И случайно попал на этот топ. Подумав, что кто-то может это принять как руководство к действию, счел своим долгом всякий случай предупредить.
Ну а для тех, у кого неважно с глазками, говорю по буквам.
Код 1. Строки 23-24 При неотрицательном k происходит выход за границы массива. Лично мне этого достаточно для оценки кода. А вам, видимо, нужно чтобы из системного блока дым повалил?
Код 2. Строка 12. Что за функция rotate? Если она из std, то она работает с классом ForwardIt. Где этот класс? Где #include <algorithm>? Какова познавательная ценность этого шаляй-валяйного поста?
Вам достаточно, или охота еще поболтать на эту пустую тему?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
01.11.2016, 15:21
Цитата Сообщение от Байт Посмотреть сообщение
то она работает с классом ForwardIt
ForwardIt - абстракция, параметр шаблона. Указатель на массив вполне под него подходит.
Из определения rotate
C++
1
2
3
template <class ForwardIterator>
ForwardIterator rotate (ForwardIterator first, ForwardIterator middle,
                        ForwardIterator last);
То есть просто не хватало заголовочного файла.
2
Диссидент
Эксперт C
 Аватар для Байт
27711 / 17329 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
01.11.2016, 15:28
Цитата Сообщение от MrGluck Посмотреть сообщение
То есть просто не хватало заголовочного файла.
Не надо оправдывать автора поста 2. Тем более, что я его вовсе не осуждаю. Хотел помочь человек. Сделал это как мог. Но руководством для ищущих его пост являться не может. Вот и все, что я хотел сказать.

Не по теме:

Babysitter, а вас я хочу успокоить. Вам не стоит опасаться "симметричного ответа". Не потому что я такой добрый. Просто я считаю возможность отрицательных отзывов штукой неправильной. И никогда к ней не прибегал и в дальнейшим не собираюсь. Ну а тем, кто этой возможностью все-таки пользуется, рекомендую подумать.

0
 Аватар для Babysitter
245 / 139 / 53
Регистрация: 23.11.2015
Сообщений: 394
01.11.2016, 15:47
Цитата Сообщение от Байт Посмотреть сообщение
Какова познавательная ценность этого шаляй-валяйного поста?
немного неряшливо, но человек отправил почитать про std::rotate.
это забавно, но не так уж много программистов знают об этой функции.

из-за этого ценность такого поста гораздо выше, чем у велосипедов, которые предложены в других топиках.
из-за этого я тут и впрягаюсь за второй листинг - он полезен, вот еще классная штука на посмотреть, в тему [ссылка на ютуб с таймкодом].

Добавлено через 9 минут

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Babysitter, а вас я хочу успокоить. Вам не стоит опасаться "симметричного ответа". Не потому что я такой добрый. Просто я считаю возможность отрицательных отзывов штукой неправильной. И никогда к ней не прибегал и в дальнейшим не собираюсь. Ну а тем, кто этой возможностью все-таки пользуется, рекомендую подумать.
опять же, без этой мотивации вы бы никогда больше не вернулись в эту тему, а не все еще было сказано. я хотел показать, что не вникнув во второй листинг вы несправедливо его обвинили. меня один упертый борландовец уже отучил бояться. он был неправ, но забрал у меня всю карму, так что эти цифры мало что значат. если по справедливости считаете, что я несу чушь - можете минусовать, это право каждого участника форума, заложенное администрацией.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2016, 15:47
Помогаю со студенческими работами здесь

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента
Помогите пожалуйста решить эту задачу, Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций,...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.

Осуществить циклический сдвиг массива вправо на m позиций
Разработать алгоритм и программу. Дан одномерный массив С размерностью 1хn (1&lt;=n&lt;=20). Элементы массива принимают значения от 0 до 255 и...

Циклический сдвиг элементов массива влево на k позиций
Дан массив размера N и число k (0&lt;k&lt;5, k&lt;N) Осуществить циклический сдвиг элементов влево на k позиций.

Циклический сдвиг элементов массива вправо на К позиций
Дан массив размера N и число К (0&lt;k&lt;5, K&lt;n) Осуществить циклический сдвиг элементов массива вправо на К позиций .


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
Собеседование по Node.js - вопросы и ответы
Reangularity 20.05.2025
Каждому разработчику рано или поздно приходится сталкиватся с техническими собеседованиями - этим стрессовым испытанием, где решается судьба карьерного роста и зарплатных ожиданий. В этой статье я. . .
Cython и C (СИ) расширения Python для максимальной производительности
py-thonny 20.05.2025
Python невероятно дружелюбен к начинающим и одновременно мощный для профи. Но стоит лишь заикнуться о высокопроизводительных вычислениях — и энтузиазм быстро улетучивается. Да, Питон медлительнее. . .
Безопасное программирование в Java и предотвращение уязвимостей (SQL-инъекции, XSS и др.)
Javaican 19.05.2025
Самые распространёные векторы атак на Java-приложения за последний год выглядят как классический "топ-3 хакерских фаворитов": SQL-инъекции (31%), межсайтовый скриптинг или XSS (28%) и CSRF-атаки. . .
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru