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

Сортировка контейнера list

14.09.2013, 16:25. Показов 4943. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как отсортировать (с помощью sort()) и вывести в текстовый документ список l ?
код программы:
Кликните здесь для просмотра всего текста
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.h>
 #include <vector>
 #include <algorithm>
 #include <list>
 #include <math.h>
 
class Tcity {
    public:
        float x,y;
        char name[30];
};
 
class TPair{
    public:
        Tcity city1;
        Tcity city2;
        float dist;
        };
 
 
 
 
using namespace std;
 
/*void show_list( list<float>&l)
{
    for (list<float>::iterator it = l.begin() ; it!=l.end() ; ++it)
        cout<<*it;
}       */
 
 
int main(int argc, char* argv[]) {
    system("chcp 1251");
    vector<Tcity> v;
    list<TPair> l;
    TPair pair;
    char buf[100];
 
    FILE *fp = fopen("C:\\task1-6.txt","rt");
 
    fgets(buf,sizeof(buf),fp);
    cout <<buf<< endl;
    Tcity *city;
    while (fgets(buf,sizeof(buf),fp)) {
        city = new Tcity;
        sscanf(buf,"%f%f%s",&(city->x),&(city->y),city->name);
        v.push_back(*city);
    }
     cout << "Найдено городов:" << v.size()<<endl;
 
     for (unsigned int i = 0; i < v.size(); i++) {
        for (unsigned int j = i+1; j < v.size(); j++) {
            if (i<j) {
                float d=sqrt((pow((v[i].x-v[j].x),2))+(pow((v[i].y-v[j].y),2)));
                if (d<3000){
                  // cout << d << "     " << v[i].name << " " <<v[j].name << endl;
                    pair.city1=v[i];
                    pair.city2=v[j];
                    pair.dist=d;
 
                    l.push_back(pair);
               }
 
 
 
            }
 
        }
 
     }
 
 
/*  show_list(*l);   */
    getchar();
 
}


Исходные данные текстового документа для программы:
Кликните здесь для просмотра всего текста
-5598 -6413 Нью-Йорк
5466 2359 Бангалор
8647 -1900 Милан
-2551 -2050 Рим
6436 -5991 Тегеран
1064 6306 Рио-де-Жанейро
-590 -9857 Калькутта
3262 5316 Барселона
6087 4705 Мехико
-4627 9747 Вена
-3146 -9728 Лима
-1901 -3764 Гётеборг
-1021 -1201 Севилья
6518 8304 Мумбаи
1603 6613 Вена
-4917 1337 Севилья
740 -583 Вроцлав
2624 7603 Рига
4281 -2711 Вильнюс
-2658 1242 Стамбул
-3008 -317 Бремен
1816 3269 Барселона
5514 -9574 Лодзь
-2001 6576 Богота
3362 2723 Сеул
-7782 928 Джакарта
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2013, 16:25
Ответы с готовыми решениями:

Использование контейнера list
Не могу из методички с задачками по контейнерам решить пару из них. Есть список целых чисел (std::list&lt;int&gt;). Нужно, за...

Указатель на элемент контейнера list
Здравия желаю. Вопрос такой: будет/может ли меняться адрес элемента, стоящего за удаляемым. Если я, например, передам ссылку на нужный...

Попытка реализовать чтото типо контейнера list
Попытка реализовать чтото типо контейнера list я не могу сообразить, чего тут не правильно. Может кто поможет, код вроде не сложный.. #...

12
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
14.09.2013, 16:44
Цитата Сообщение от weightless Посмотреть сообщение
с помощью sort()
std::list::sort
1
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 103
15.09.2013, 00:24  [ТС]
Спасибо. А как вывести в текст?

Добавлено через 7 часов 3 минуты
std::list::sort Запускать в цикле?
Как вывести list в текстовый файл?
0
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
15.09.2013, 00:59
Цитата Сообщение от weightless Посмотреть сообщение
Как вывести list в текстовый файл?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <list>
#include <iterator>
 
int main()
{
    std::list<int> lst;
    for (int i = 0; i < 10; ++i)
        lst.push_back(i);
    std::ofstream file("out.txt");
    std::copy( lst.begin(), lst.end(),
                std::ostream_iterator<int>(file, " "));
    file.close();
    return 0;
}
1
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 103
15.09.2013, 17:17  [ТС]
пишет две ошибки в строке
C++
1
    l.push_back(i);
:
Кликните здесь для просмотра всего текста

[bcc32 Error] File2.cpp(75): E2034 Cannot convert 'int' to 'TPair'
Full parser context
File2.cpp(34): parsing: int main(int,char * *)
[bcc32 Error] File2.cpp(75): E2342 Type mismatch in parameter '_Val' (wanted 'const TPair &', got 'int')
Full parser context
File2.cpp(34): parsing: int main(int,char * *)
из кода
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
int t=l.size();
    for (int i = 0; i < t; ++i)
        l.push_back(i);
    std::ofstream file("С:\\out.txt");
    std::copy( l.begin(), l.end(),
                std::ostream_iterator<int>(file, " "));
    file.close();
    return 0;


Добавлено через 5 минут
А если эту строку с ошибкой написать
C++
1
l[i].push_back();
, то выходит другая ошибка:
Кликните здесь для просмотра всего текста
[bcc32 Error] File2.cpp(75): E2094 'operator+' not implemented in type 'list<TPair,allocator<TPair> >' for arguments of type 'int'
Full parser context
File2.cpp(34): parsing: int main(int,char * *)
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
15.09.2013, 17:33
Цитата Сообщение от weightless Посмотреть сообщение
А если эту строку с ошибкой написать
И зачем? Естественно чушь...
А ошибка в том, что список из TPair'ов состоит, а ты туда int'ы запихиваешь. Тебе общую схему показали, что ты туда вставишь - твое дело.

И вообще - свой код приводить надо. Изменил что-то, а мы по примеру должны понять, что ты там напечатал.
1
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 103
16.09.2013, 12:20  [ТС]
А что тогда и в какой форме писать вместо стд?
0
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
16.09.2013, 12:25
std это стандартная библиотека шаблонов. Тебе сказали, что ты вместо TPair пихаешь int. Скопипастил и даже не подумал.
0
16.09.2013, 12:29

Не по теме:

Цитата Сообщение от Peperovich Посмотреть сообщение
std это стандартная библиотека шаблонов.
тогда std::size_t - это стандартный шаблон?

2
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
16.09.2013, 12:30
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


тогда std::size_t - это стандартный шаблон?

Не по теме:


Извиняюсь, спутал std с stl

1
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 103
16.09.2013, 16:22  [ТС]
И все-таки, в коде
C++
1
std::ostream_iterator<TPair>(file, " "));
ошибка
Кликните здесь для просмотра всего текста
[bcc32 Error] iterator(327): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'TPair'
Full parser context
iterator(326): decision to instantiate: ostream_iterator<TPair,char,char_traits< char> > & operator ostream_iterator<TPair,char,char_traits< char> >::=(const TPair &)
--- Resetting parser context for instantiation...
File3.cpp(7): #include C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\include\boost_1_39\boost\tr1 \tr1\iterator
iterator(20): #include c:\program files (x86)\embarcadero\rad studio\11.0\include\../include/dinkumware/iterator
iterator(7): namespace std
iterator(311): class ostream_iterator<_Ty,_Elem,_Traits>
iterator(326): parsing: ostream_iterator<TPair,char,char_traits< char> > & operator ostream_iterator<TPair,char,char_traits< char> >::=(const TPair &)


C++
1
2
3
4
5
6
7
8
9
10
11
    ostream_iterator(ostream_type& _Ostr,
        const _Elem *_Delim = 0)
        : _Myostr(&_Ostr), _Mydelim(_Delim)
        {   // construct from output stream and delimiter
        }
 
    ostream_iterator<_Ty, _Elem, _Traits>& operator=(const _Ty& _Val)
        {   // insert value into output stream, followed by delimiter
        *_Myostr << _Val;
        if (_Mydelim != 0)
            *_Myostr << _Mydelim;
0
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
16.09.2013, 16:43
Потому, что тип TPair не встроенный, а значит не известно как его выводить. Тебе нужно перегрузить оператор <<. Набери в гугле перегрузка оператора вывода в С++ и по примеру сделай для себя.
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 16:55
weightless, пишет же, нерусским языком, в чём ошибка:
Цитата Сообщение от weightless Посмотреть сообщение
'operator<<' not implemented in type 'ostream' for arguments of type 'TPair'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2013, 16:55
Помогаю со студенческими работами здесь

В чем ошибка? программа с использованием контейнера list
/*Написать программу,моделирующую управление каталогом в файловой сис* теме. Для каждого файла в каталоге содержатся следующие...

Перегрузка оператора индексирования для контейнера list
Здравствуйте помогите перегрузить оператор индексирования для контейнера list это последнее задание из домашнего задания,преподователь...

МОЖНО ли вызвать исключение выхода за пределы контейнера list (STL) ?
или контейнер list ходит по кругу и в этом случае не может произойти выход за его пределы ?

Сортировка ассоциативного контейнера!
В классе есть поля: название, цена и количество. Нужно записать данные в ассоциативный контейнер, и нужно один раз отсортировать и вывести...

Сортировка для контейнера с указателями
Понадобилось сделать контейнер указателей, но встала проблема сортировки и типа контейнера : #include &lt;set&gt; using std::set; ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru