Форум программистов, компьютерный форум, киберфорум
Наши страницы

Циклический сдвиг. Очень нужно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ STL list http://www.cyberforum.ru/cpp-beginners/thread969603.html
как вставить элемент в середину списка list STL? float list_insert_rand(int num) { srand (time(NULL)); int rand_num, rand_pos; if(MyList.size() == 0) rand_pos = 0; clock_t MyTime = clock();...
C++ Консоль Можно ли в консольном приложении сделать так, чтобы саму консоль не было видно вообще? http://www.cyberforum.ru/cpp-beginners/thread969595.html
C++ ошибка сцепления строк С++
добрый вечер! Возникла проблема в программе: string str="D:\\Tab"+n+".txt" подчеркивает ".txt" красным и говорит:"выражение должно быть целочисленным или перечисляемым". n - переменная типа int,...
Непонятная ошибка при сложении строк C++
добрый вечер! Возникла проблема в программе: string str="D:\\Tab"+n+".txt" подчеркивает ".txt" красным и говорит:"выражение должно быть целочисленным или перечисляемым". n - переменная типа int,...
C++ Микроконтроллеры С++ http://www.cyberforum.ru/cpp-beginners/thread969578.html
Вобщем нужно зажечь все красные светоиды, пока нажата кнопка. Код есть, работает, но по системе - нажал кнопку - горит, нажал кнопку еще раз - тухнет. Нужно именно, чтобы светоиды горели, пока кнопка...
C++ Работа с классами Здравствуйте. Есть код, компиляция происходит нормально, Dev-C++ не выдаёт никаких ошибок. Но когда запускаю программу и начиная там вводить данные программа выдаёт ошибку и закрывается. Подскажите... подробнее

Показать сообщение отдельно
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
05.10.2013, 20:16
Цитата Сообщение от scenotaph Посмотреть сообщение
И повторяем эту процедуру N - I_max раз, где N это количество элементов массива, а I_max индекс максимального элемента.
Что-то как-то сложно. Можно же проще:
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
#include <vector>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
void print(const string& s, vector<int> & v) {
    cout << s << ": ";
    for (auto i : v)
        cout << i << ", ";
    cout << endl;
}
 
void rotate_max(vector<int> && v) {
    print("Original", v);
    auto max = max_element(begin(v), end(v));
    auto mid = (next(max) == end(v)) ? begin(v) : next(max);
    rotate(begin(v), mid, end(v));
    print("Rotated", v);
    cout << endl;
}
 
int main() {
    rotate_max({ 1, 2, 5, 4, 3, 2 });
    rotate_max({ 5, 4, 3, 2, 1, 2 });
    rotate_max({ 4, 3, 2, 1, 2, 5 });
}
Original: 1, 2, 5, 4, 3, 2,
Rotated: 4, 3, 2, 1, 2, 5,

Original: 5, 4, 3, 2, 1, 2,
Rotated: 4, 3, 2, 1, 2, 5,

Original: 4, 3, 2, 1, 2, 5,
Rotated: 4, 3, 2, 1, 2, 5,
Добавлено через 5 минут
Даже еще проще:
C++
1
2
    auto max = max_element(begin(v), end(v));
    rotate(begin(v), next(max), end(v));
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru