Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36

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

01.04.2013, 10:17. Показов 858. Ответов 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;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2013, 10:17
Ответы с готовыми решениями:

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

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

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

7
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.04.2013, 10:17
Лист не может использоваться в sort. Используйте list.sort().
1
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
01.04.2013, 10:24  [ТС]
а как сюда добавить еще и принцип сортировки? скажем, чтоб сортировало по убыванию или согласно предикату comp?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.04.2013, 10:45
mazukta26,
C++
1
list.sort(comp);
0
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
01.04.2013, 22:13  [ТС]
в контейнере вектор есть upper_bound, помогает, скажем, при вставке в отсортированный контейнер какой-то элемент, не нарушая упорядоченности
для списка, видимо, это не работает
есть ли что-нибудь аналогичное для списка?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
01.04.2013, 22:22
у вектора нет. есть самостоятельный алгоритм. и он вроде работает не только с итераторами произвольного доступа. с списковыми итераторами конечно будет не очень эффективно, но вроде будет:
http://www.cplusplus.com/refer... pper_bound
0
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
01.04.2013, 22:27  [ТС]
просто если закомментировать кусок кода с аппер_баунд, все хорошо
а если его не комментировать, то выскакивает уйма ошибок

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;
}
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
01.04.2013, 22:49
может потому, что tmp забыли?
i=std::upper_bound(l.begin(),l.end(), tmp, comp);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2013, 22:49
Помогаю со студенческими работами здесь

Какой алгоритм сортировки использует std::sort();
Сколько пользуюсь но не знаю как он работает. Читал что сложность этой сортировки примерно О(n*lgn)

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

Алгоритм Stupid sort
Здравствуйте помогите написать функцию для сортировки массива с помощью алгоритма глупой сортировки на Assembler.

Bead sort алгоритм сортировки
Bead sort (алгоритм бусинной\бисерной сортировки). Довольно интересный алгоритм нашел о нем некоторую информацию, но к сожалению вся она на...

Какой алгоритм сортировки использует метод sort?
Какой алгоритм сортировки использует метод sort?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru