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

Не срабатывает сортировка - C++

Восстановить пароль Регистрация
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 10:58     Не срабатывает сортировка #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
32
33
34
35
36
#include <iostream>
#include <vector>
using namespace std;
void sort(vector<int> v);
int main()
{
    vector<int> vect;
    int temp;
    while(cin>>temp)
        vect.push_back(temp);
    cout << "-------------------" << endl;
    sort(vect);
 
 
 system("pause");
    return 0;
}
 
void sort(vector<int> v)
{
    int temp;
    for(int i=0; i<v.size(); i++)
        for(int j=0; j<v.size()-1; j++)
        {
           if(v[j]<v[j++])
           {
               v[j]=temp;
               temp=v[j++];
               v[j++]=temp;        
           }
        
        }
        for(int k=0; k<v.size(); k++)
            cout<<v[k]<<endl;
 
}
Не срабатывает сортировка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2011, 10:58     Не срабатывает сортировка
Посмотрите здесь:

C++ Не срабатывает
C++ Не срабатывает условие. Почему?
C++ Не срабатывает #define
C++ Не срабатывает unique_copy
C++ Не срабатывает gets
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.11.2011, 11:14     Не срабатывает сортировка #2
Как минимум, уберите везде j++ и оставьте инкремент только в цикле. Напишите v[j+1]
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 11:35  [ТС]     Не срабатывает сортировка #3
Цитата Сообщение от Thinker Посмотреть сообщение
Как минимум, уберите везде j++ и оставьте инкремент только в цикле. Напишите v[j+1]
Все рано не работает
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.11.2011, 11:43     Не срабатывает сортировка #4
Цитата Сообщение от Sylar9 Посмотреть сообщение
Все рано не работает
Так элементы надо правильно менять:
temp = v[j];
v[j] = v[j+1];
v[j+1] = temp;
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 11:50  [ТС]     Не срабатывает сортировка #5
Цитата Сообщение от Thinker Посмотреть сообщение
Так элементы надо правильно менять:
temp = v[j];
v[j] = v[j+1];
v[j+1] = temp;
поменял не работает
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.11.2011, 11:53     Не срабатывает сортировка #6
Цитата Сообщение от Sylar9 Посмотреть сообщение
поменял не работает
Покажите программу
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 11:56  [ТС]     Не срабатывает сортировка #7
Цитата Сообщение от Thinker Посмотреть сообщение
Покажите программу
вот
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
#include <iostream>
#include <vector>
using namespace std;
void sort(vector<int> v);
int main()
{
    vector<int> vect;
    int temp;
    while(cin>>temp)
        vect.push_back(temp);
sort(vect);
 
 
 system("pause");
    return 0;
}
 
void sort(vector<int> v)
{
    int temp;
    for(int i=0; i<v.size(); i++)
        for(int j=0; j<v.size()-1; j++)
        {
           if(v[j]<v[j++])
           {
               temp = v[j];
                v[j] = v[j+1];
                v[j+1] = temp;     
           }
        
        }
        for(int k=0; k<v.size(); k++)
            cout<<v[k]<<endl;
 
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.11.2011, 11:59     Не срабатывает сортировка #8
Цитата Сообщение от Thinker Посмотреть сообщение
Как минимум, уберите везде j++ и оставьте инкремент только в цикле. Напишите v[j+1]
Везде надо было это сделать
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 12:03  [ТС]     Не срабатывает сортировка #9
Цитата Сообщение от Thinker Посмотреть сообщение
Везде надо было это сделать
Все работает, а как можно вектор разбросать то есть на пример 1, 2, 3 должно вывести 3, 1, 2 то есть в любом порядки разбросать. Мне надо написать функцию
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
08.11.2011, 12:04     Не срабатывает сортировка #10
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
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
 
using namespace std;
 
void sort(vector<int> vec);
 
int main()
{
    vector<int> vec;
    int tmp;
    while (cin >> tmp)
        vec.push_back(tmp);
    sort(vec);
    return 0;
}
 
void sort(vector<int> vec)
{
    int len = vec.size();
    for(int i = 0; i < len - 1; i++)
        for(int j = i + 1; j < len; j++)
            if (vec[i] > vec[j])
            {
                int buf = vec[i];
                vec[i] = vec[j];
                vec[j] = buf;
            }
 
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
08.11.2011, 12:05     Не срабатывает сортировка #11
Sylar9, std::random_shufle.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.11.2011, 12:06     Не срабатывает сортировка #12
Цитата Сообщение от Sylar9 Посмотреть сообщение
Все работает, а как можно вектор разбросать то есть на пример 1, 2, 3 должно вывести 3, 1, 2 то есть в любом порядки разбросать. Мне надо написать функцию
C++
1
2
3
4
5
for(i = 0; i < n - 1; i++)
{
   k = rand()%(n-i) + i;
   // меняем местами v[i] и v[k] и все
}
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
08.11.2011, 12:07     Не срабатывает сортировка #13
Цитата Сообщение от Sylar9 Посмотреть сообщение
Все работает, а как можно вектор разбросать то есть на пример 1, 2, 3 должно вывести 3, 1, 2 то есть в любом порядки разбросать. Мне надо написать функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    vector<int> vec;
    for(int i = 0; i < 10; i++)
        vec.push_back(i);
    random_shuffle(vec.begin(), vec.end());
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
 
    return 0;
}
Так она уже есть.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 12:12  [ТС]     Не срабатывает сортировка #14
Цитата Сообщение от Петррр Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    vector<int> vec;
    for(int i = 0; i < 10; i++)
        vec.push_back(i);
    random_shuffle(vec.begin(), vec.end());
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
 
    return 0;
}
Так она уже есть.
мне самому надо написать эту функцию
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
08.11.2011, 12:16     Не срабатывает сортировка #15
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 <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <ctime>
 
using namespace std;
 
void random_shuffle(vector<int> &vec)
{
    int len = vec.size();
    for(int i = 0; i < len; i++)
    {
        int index = rand() % len;
        int buf = vec[i];
        vec[i] = vec[index];
        vec[index] = buf;
    }
}
 
int main()
{
    vector<int> vec;
    for(int i = 0; i < 10; i++)
        vec.push_back(i);
    srand(time(NULL));
    random_shuffle(vec);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
 
    return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 12:17  [ТС]     Не срабатывает сортировка #16
Цитата Сообщение от Thinker Посмотреть сообщение
C++
1
2
3
4
5
for(i = 0; i < n - 1; i++)
{
   k = rand()%(n-i) + i;
   // меняем местами v[i] и v[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
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
void sort(vector<int> v);
void per(vector<int> v, int k);
int main()
{
    vector<int> vect;
    int temp;
    while(cin>>temp)
        vect.push_back(temp);
sort(vect);
per(vect);
 
 
 system("pause");
    return 0;
}
 
void sort(vector<int> v)
{
    int temp;
    for(int i=0; i<v.size(); i++)
        for(int j=0; j<v.size()-1; j++)
        {
           if(v[j]<v[j+1])
           {
               temp = v[j];
                v[j] = v[j+1];
                v[j+1] = temp;     
           }
        
        }
        for(int k=0; k<v.size(); k++)
            cout<<v[k]<<endl;
 
}
void per(vector<int> v, int k)
{
for(int i = 0; i < v.size() - 1; i++)
{
   k = rand()%(v.size()-i) + i;
   // меняем местами v[i] и v[k] и все
   cout<<v[i]<<endl;
}
}
Вот ошибка: 'per' : function does not take 1 parameters
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
08.11.2011, 12:21     Не срабатывает сортировка #17
Sylar9, А зачем передавать k?
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
08.11.2011, 12:23  [ТС]     Не срабатывает сортировка #18
Цитата Сообщение от ForEveR Посмотреть сообщение
Sylar9, А зачем передавать k?
Не знаю??? убрал К всерано ошибка
Код
void per(vector<int> v)
{
for(int i = 0; i < v.size() - 1; i++)
{
  int k = rand()%(v.size()-i) + i;
   // меняем местами v[i] и v[k] и все
   cout<<v[i]<<endl;
}
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
08.11.2011, 12:28     Не срабатывает сортировка #19
Sylar9, Почитайте как следует книжку. Одно дело с чем-то помочь. Другое дело - объяснять все с нуля.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2011, 12:47     Не срабатывает сортировка
Еще ссылки по теме:

C++ Не срабатывает вложенные If/else
Не срабатывает switch C++
C++ Не срабатывает цикл FOR

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.11.2011, 12:47     Не срабатывает сортировка #20
[QUOTE=Sylar9;2147958]Пробувал ошибку выдает:
C++
1
2
3
4
5
6
7
8
9
void per(vector<int> v, int k)
{
for(int i = 0; i < v.size() - 1; i++)
{
   k = rand()%(v.size()-i) + i;
   // меняем местами v[i] и v[k] и все
   cout<<v[i]<<endl;
}
}

Не по теме:

Ну вы прикалист, особенно комментарий понравился. Я его написал, чтобы вы его прописали. ForEveR хороший дал вам совет - книжки почитайте

Yandex
Объявления
08.11.2011, 12:47     Не срабатывает сортировка
Ответ Создать тему
Опции темы

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