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

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

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

не проходит алгоритм sort - C++

01.04.2013, 10:17. Просмотров 332. Ответов 7
Метки нет (Все метки)

задача простейшая: создать контейнер "список", заполнить словами из файла, отсортировать, вывести
но компилятору не нравится сортировка
что с ней не так?

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
48
49
50
51
52
53
54
#include <iostream>
#include <fstream>
#include <list>
#include <functional>
#include <string>
#include <time.h>
#include <algorithm>
using namespace std;
string ToLower(const string a){
    string tmp(a);
    for (int i=0;i<tmp.length();i++)
    {
        if (tmp[i]<='Z' && tmp[i]>='A')
            tmp[i]=tolower(tmp[i]);
        else 
            if (tmp[i]>= 'А' && tmp[i]<= 'Я')
                tmp[i]=_tolower(tmp[i]);
    }
    return tmp;
}
bool comp(const string & a, const string & b){
    return (ToLower(a)<ToLower(b));
}
int main ()
{
    setlocale(LC_ALL,".1251");
    ifstream in("input.txt");
    if (!in)
    {
        cout<<"Файл не найден"<<endl;
        return 0;
    }
    string tmp;
    list<string> l;
    while (!in.eof())
    {
        in>>tmp;
        l.push_back(tmp);
    }
    list<string>::iterator i;
    list<string>::reverse_iterator ri;
    for (i=l.begin();i!=l.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    for (ri=l.rbegin();ri!=l.rend();ri++)
        cout<<*ri<<" ";
    cout<<endl;
    cout<<"Список в сортированном виде: "<<endl;
    sort(l.begin(),l.end());
    for (i=l.end();i!=l.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2013, 10:17     не проходит алгоритм sort
Посмотрите здесь:

Алгоритм sort - C++
Товарищи, подскажите, в чем косяк? std::vector&lt;gc_node *&gt; nodes; ... void gc_algorithm::put_data(std::string str_put) { ...

Алгоритм Быстрой сортировки (Quick Sort) - C++
Всем доброго времени суток. Реализовал Быструю Сортировку на C++. Всё работает. Только препод требует доказать, что мой алгоритм...

Алгоритм сортировки In-place merge sort - C++
Для здачи лабораторной нужно написать алгоритм сортировки vector и массивов любых типов данных(как пользовательских так и стандартных),...

Qvick-sort алгоритм быстрой сортировки. Гляньте плс( - C++
пОДСКАЖИТЕ ПЛС ЧТО НЕ ТАК((( Знаю гдето напортачил когда массив в функцию передавалю Гляньте кто-то шарящий может кто поймет в чем дело,...

sort() - C++
пожалуйста напишите несколько примеров,с перегруженными версиями sort? vector&lt;int&gt; vec; vec.push_back(100); vec.push_back(10); ...

Sort() - C++
Страуструп в своей книге вызывает эту функцию без всяких дополнительных библиотек. У меня же такая функция в стандартной библиотека...

Counting sort - C++
объясните пож что это означает. где индекс а где элемент

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
01.04.2013, 10:17     не проходит алгоритм sort #2
Лист не может использоваться в sort. Используйте list.sort().
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
01.04.2013, 10:24  [ТС]     не проходит алгоритм sort #3
а как сюда добавить еще и принцип сортировки? скажем, чтоб сортировало по убыванию или согласно предикату comp?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
01.04.2013, 10:45     не проходит алгоритм sort #4
mazukta26,
C++
1
list.sort(comp);
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
01.04.2013, 22:13  [ТС]     не проходит алгоритм sort #5
в контейнере вектор есть upper_bound, помогает, скажем, при вставке в отсортированный контейнер какой-то элемент, не нарушая упорядоченности
для списка, видимо, это не работает
есть ли что-нибудь аналогичное для списка?
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.04.2013, 22:22     не проходит алгоритм sort #6
у вектора нет. есть самостоятельный алгоритм. и он вроде работает не только с итераторами произвольного доступа. с списковыми итераторами конечно будет не очень эффективно, но вроде будет:
http://www.cplusplus.com/reference/a...kw=upper_bound
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
01.04.2013, 22:27  [ТС]     не проходит алгоритм sort #7
просто если закомментировать кусок кода с аппер_баунд, все хорошо
а если его не комментировать, то выскакивает уйма ошибок

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <list>
#include <functional>
#include <string>
#include <time.h>
#include <algorithm>
using namespace std;
string ToLower(const string a){
    string tmp(a);
    for (int i=0;i<tmp.length();i++)
    {
        if (tmp[i]<='Z' && tmp[i]>='A')
            tmp[i]=tolower(tmp[i]);
        else 
            if (tmp[i]>= 'А' && tmp[i]<= 'Я')
                tmp[i]=_tolower(tmp[i]);
    }
    return tmp;
}
bool comp(const string & a, const string & b){
    return (ToLower(a)<ToLower(b));
}
int main ()
{
    setlocale(LC_ALL,".1251");
    ifstream in("input.txt");
    if (!in)
    {
        cout<<"Файл не найден"<<endl;
        return 0;
    }
    string tmp;
    list<string> l;
    while (!in.eof())
    {
        in>>tmp;
        l.push_back(tmp);
    }
    list<string>::iterator i;
    list<string>::reverse_iterator ri;
    for (i=l.begin();i!=l.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    for (ri=l.rbegin();ri!=l.rend();ri++)
        cout<<*ri<<" ";
    cout<<endl;
    cout<<"Список в сортированном виде: "<<endl;
    cout<<"\tПо возрастанию:"<<endl;
    l.sort();
    for (i=l.begin();i!=l.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    cout<<"\tПо убыванию:"<<endl;
    for (ri=l.rbegin();ri!=l.rend();ri++)
        cout<<*ri<<" ";
    cout<<endl;
    cout<<"Сортировка по возрастанию без учета регистра:"<<endl;
    l.sort(comp);
    for (i=l.begin();i!=l.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    cout<<"Вставка элемента с сохранением упорядоченности:"<<endl;
    tmp="dara";
    i=upper_bound(l.begin(),l.end(),comp);
    l.insert(i,tmp);
    for (i=l.begin();i!=l.end();i++)
        cout<<*i<<" ";
    cout<<endl;
    cout<<"Бинарный поиск элемента в упорядоченном списке:"<<endl;
    tmp="evA";
    if (binary_search(l.begin(),l.end(),tmp,comp))
        cout<<"Элемент найден!"<<endl;
    else cout<<"Элемент не найден!"<<endl;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2013, 22:49     не проходит алгоритм sort
Еще ссылки по теме:

Проблемы с sort() - C++
В #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;algorithm&gt; using namespace std; void out(int *a,int...

Quiсk sort - C++
Пытаюсь освоить метод быстрой сортировки, в оригинале quick sort. Очень новенький в c++. Учил не много c++ builder, но решил написать в...

Select Sort - C++
Здравствуйте. Задача состоит в том чтоб отсортировать строки матрицы NxM (то есть поменять их местами), по возрастанию первых чисел в...

sort и stable_sort - C++
читаю: stable_sort sorts the elements in the range [first,last) into ascending order, like sort, but stable_sort preserves the relative...

Sort и lvalue - C++
Люди подскажите пожалуйста, вот пытаюсь разобраться как написать свой итератор произвольного доступа и столкнулся с шибкой: In file...


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

Или воспользуйтесь поиском по форуму:
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.04.2013, 22:49     не проходит алгоритм sort #8
может потому, что tmp забыли?
i=std::upper_bound(l.begin(),l.end(), tmp, comp);
Yandex
Объявления
01.04.2013, 22:49     не проходит алгоритм sort
Ответ Создать тему
Опции темы

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