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

Ассоц. и послед. контейнеры. Разница в методах и алгоритмах. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Посчитать сумму платежей с указанной целью http://www.cyberforum.ru/cpp-beginners/thread423535.html
Проблема такая, нужно посчитать сумму платежей с указанной целью. То есть допустим я в поле "введите цель платежа" ввожу "перевод" к примеру. Дальше как я понял нужно найти все платежи с таким названием ну и потом посчитать их сумму... На теории легко, а как доходит до практики меня тупит, незнаю как это записать...
C++ Разработать программу работы со связным списком мониторов. Разработать программу работы со связным списком мониторов. Для каждого монитора должна храниться следующая информация: модель, производитель, длина диагонали, цена. Отсортировать мониторы по производителю. Те мониторы, у которых производители одинаковы, – отсортировать также по цене. Помогите пожайлуста. http://www.cyberforum.ru/cpp-beginners/thread423508.html
Не компилирует... C++
Здравствуйте, столкнулся с такой проблемой... Вообщем когда дома пишу программу, дома - работает. Прихожу в институт - не работает и при откладке выскакивает окно с сообщением о ошибке "Не удается найти указанный файл". Не создает .ехе файл. Как исправить этот лаг? Помогите.
Сортировка C++
Еще одна задачка: Дан массив(одномерный, кол-во елементов случайно заданно) натуральных чисел, в которой могут быть одинаковые между собой елементы. Отсортировать массив по убыванию, если встречаються одинаковые елементы то в новый массив ввести элементы но по одному екземпляру. Вывести изначальный массив на екран и после сортировки.(должно на екране присутствовать 2 массива) Сам языка...
C++ Даны действительные числа a_1,…,a_n,b_1,…,b_n. http://www.cyberforum.ru/cpp-beginners/thread423482.html
Здравствуйте, если вам не сложно, не могли бы вы помочь. Даны действительные числа a_1,…,a_n,b_1,…,b_n. Вычислить: (a_1 〖+b〗_n )(a_2 〖+b〗_(n-1) )…(a_n+b_1 ).
C++ Нахождение максимального елемента.. Есть задача: дан массив(одномерный,кол-во елементов рендомное) из натуральных елементов, отсортировать его по убыванию и дано число у(натуральное, введено пользователем с клавиатуры), из отсортированного массива взять произведение первых 3х и поделить на введенное пользователем число у. Вывести это число. Просьба написать на борланде. подробнее

Показать сообщение отдельно
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
31.01.2012, 14:12  [ТС]     Ассоц. и послед. контейнеры. Разница в методах и алгоритмах.
Столкнулся с еще одним вопросом (по этой же теме). Выше я писал код программы - речь пойдет о ней. При вставке (insert) во множество элементов немного не догоняю, как оно их сортирует. В operator< () я добавил строку
C++
1
cout << p1.lastName << "--" << p2.lastName << endl;
и увидел следующее:
McDonald--Deauville (operator< () вернет false, okay....)
!!!Почему нету сравнения McDonald--Deauville (вдруг McDonald == Deauville) !?
Bartoski--Deauville (operator< () вернет true, okay....)
Deauville--Bartiski (здесь false, зачем ЭТО сравнение!?!?!?! Из предыдущего уже было понятно, что оно СТРОГО < !!!)
......
и т.д.
......
Т.е. при вставке, если "вставляемый" < "имеющегося" возвращает false, то операция "имеющийся" < "вставляемого" не производится. А когда "вставляемый" < "имеющегося" возвращает true, то бессмысленное сравнение "имеющийся" < "вставляемого" производится.
Прошу вкратце объяснить, почему так происходит. Как я понял - это связано с тем, при помощи какой структуры данных (а именно какого дерева) МУЛЬТИМНОЖЕСТВО хранит в себе элементы. Заранее благодарен.

p.s. Код программы:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// setpers.cpp
// Применение мультимножества для хранения объектов person
#pragma warning (disable:4786)     // для множеств (для
                                   // компиляторов фирмы Microsoft)
#include <iostream>
#include <set>
#include <string>
#include <iomanip>
using namespace std;
 
class person
   {
   private:
      string lastName;
      string firstName;
      long phoneNumber;
   public:                         // конструктор по умолчанию
      person() : lastName("пусто"),
                 firstName("пусто"), phoneNumber(0)
         {  }
                                   // конструктор с тремя параметрами
      person(string lana, string fina, long pho) :
              lastName(lana), firstName(fina), phoneNumber(pho)
         {  }
      friend bool operator<(const person&, const person&);
      friend bool operator==(const person&, const person&);
 
      void display() const         // вывод данных о людях
         {
         cout << endl << lastName << ",\t" << firstName
              << "\t\tТелефон: " << phoneNumber;
         }
   };
                                   // оператор < для класса person
bool operator<(const person& p1, const person& p2)
   {
   cout << "Compare: " << setw(10) << left << p1.lastName << ' ' << p2.lastName << endl << right;
   if(p1.lastName == p2.lastName)
      return (p1.firstName < p2.firstName) ? true : false;
   return (p1.lastName < p2.lastName) ? true : false;
   }
                                   // оператор == для класса person
bool operator==(const person& p1, const person& p2)
   {
       cout << "operator==()" << endl;
   return (p1.lastName == p2.lastName &&
           p1.firstName == p2.firstName ) ? true : false;
   }
///////////////////////////////////////////////////////////
int main()
   {                               // создание объектов person
       setlocale(LC_ALL, "rus");
   person pers1("Deauville", "William", 8435150);
   person pers2("McDonald", "Stacey", 3327563);
   person pers3("Bartoski", "Peter", 6946473);
   person pers4("KuangThu", "Bruce", 4157300);
   person pers5("Wellington", "John", 9207404);
   person pers6("McDonald", "Amanda", 8435150);
   person pers7("Fredericks", "Roger", 7049982);
   person pers8("McDonald", "Stacey", 7764987);
                                   // мультимножество класса person
   multiset< person, less<person> > persSet;
                                   // итератор этого мультимножества
   multiset<person, less<person> >::iterator iter;
 
   persSet.insert(pers1);          // занести объекты person в
                                   //мультимножество
   persSet.insert(pers2);
   persSet.insert(pers3);
   persSet.insert(pers4);
   persSet.insert(pers5);
   persSet.insert(pers6);
   persSet.insert(pers7);
   persSet.insert(pers8);
 
   cout << "\nЧисло записей: " << persSet.size();
 
   iter = persSet.begin();         //Вывод содержимого
                                   //  мультимножества
   while( iter != persSet.end() )
      (*iter++).display();
                                   // получение имени и фамилии
   string searchLastName, searchFirstName;
   cout << "\n\nВведите фамилию искомого человека: ";
   cin >> searchLastName;
   cout << "Введите имя: ";
   cin >> searchFirstName;
        // создание объекта с заданными значениями атрибутов
   person searchPerson(searchLastName, searchFirstName, 0);
        // сосчитать количество людей с таким именем
   int cntPersons = persSet.count(searchPerson);
   cout << "Число людей с таким именем: " << cntPersons;
 
        // вывести все записи, отвечающие запросу
   iter = persSet.lower_bound(searchPerson);
   while( iter != persSet.upper_bound(searchPerson) )
      (*iter++).display();
   cout << endl;
   return 0;
   }    // end main()
 
Текущее время: 03:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru