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

Структуры, объединения и типы пользователя - C++

Восстановить пароль Регистрация
 
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
30.11.2013, 03:05     Структуры, объединения и типы пользователя #1
Доброго времени суток! Помогите, пожалуйста, с заданием:
Создать список произвольной организации. Областью данных каждого элемента является строка, содержащая название геометрической фигуры, и площадь этой фигуры. Отсортировать все элементы списка в порядке убывания по названиям фигур (длиной строки) и затем в порядке возрастания по величине занимаемой площади (имеется в виду одноименные фигуры).

Добавлено через 30 минут
как то так?
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
#include <iostream>
#include <iomanip>
#include <string>
#include <list>
using namespace std;
 
typedef pair<string,long> data_type;
typedef list<data_type> figure_list;
 
inline bool figure_order(data_type const &a, data_type const &b) {
    return a.first > b.first || (a.first == b.first && a.second < b.second);
}
 
int main() {
    figure_list figures;
    data_type sample;
    
    while(cin >> sample.first >> sample.second) {
        figures.push_back(sample);
    }
    
    figures.sort(figure_order);
    
    for(figure_list::iterator fig=figures.begin(), efig=figures.end(); fig!=efig; ++fig) {
        cout << fig->first << ": " << fig->second << "\n";
    }
}
Добавлено через 2 часа 37 минут
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
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
using namespace std;
 
int main() 
{
    typedef map<long, bool> by_area;
    typedef map<string, by_area> figure_by_name;
    figure_by_name database;
    string name;
    long size;
    
    while(cin >> name >> size) 
{
        database[name][size];
    }
    
    for(figure_by_name::iterator fig=database.begin(), efig=database.end(); fig!=efig; ) 
        {
        --efig;
        cout << efig->first << ":\n";
        for(by_area::iterator area=efig->second.begin(), earea=efig->second.end(); area!=earea; ++area) 
                {
            cout << "  " << area->first << "\n";
        }
    }
}
Добавлено через 2 часа 30 минут
жду критики/советов...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 03:05     Структуры, объединения и типы пользователя
Посмотрите здесь:

C++ Структуры и объединения
C++ Структуры и перечисляемые типы
C++ Структуры, объединения и определяемые пользователем типы. Массивы структур
Структуры, Объединения, Перечисления C++
C++ Как обратиться к полям объединения, которое находится внутри структуры?
Структуры и объединения C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
07.12.2013, 02:11  [ТС]     Структуры, объединения и типы пользователя #2
вот сделал так:
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
#include <iostream>
#include <string>
 
using namespace std;
struct Figures
{
    string geometric_figure;
    unsigned int Ploshcha;    
};
 
void output (Figures *b)
{   
    for (int index = 0; index < 5; index++)
    {
        cout << index << " " << b[index].geometric_figure << " " << b[index].Ploshcha << endl;   
    }
}
void Sort (Figures *q)
{
    string value1;
    unsigned int value2;    
 
    for(int w = 0; w < 5; w++)
    {
        for(int e = 1; e <= 5; e++)
        {
            if(q[e].geometric_figure > q[e-1].geometric_figure)
            {
                value2 = q[e].Ploshcha;
                q[e].Ploshcha = q[e-1].Ploshcha;
                q[e-1].Ploshcha = value2;               
 
                value1 = q[e].geometric_figure;
                q[e].geometric_figure = q[e-1].geometric_figure;
                q[e-1].geometric_figure = value1;
            }
        }
    }
}
void Sort2(Figures *p)
{
    string value1;
    unsigned int value2;    
 
    for(int w = 0; w < 5; w++)
    {
        for(int e = 1; e <= 5; e++)
        {
            if(p[e].Ploshcha<p[e-1].Ploshcha)
            {
                value2 = p[e].Ploshcha;
                p[e].Ploshcha = p[e-1].Ploshcha;
                p[e-1].Ploshcha = value2;               
 
                value1 = p[e].geometric_figure;
                p[e].geometric_figure = p[e-1].geometric_figure;
                p[e-1].geometric_figure = value1;
            }
        }
    }
}
 
int main()
{
    int number = 5;
    Figures *Fig;
    Fig = new Figures [number];
 
    Fig[0].geometric_figure = "Triangle";  Fig[0].Ploshcha = 5; 
    Fig[1].geometric_figure = "Circle"; Fig[1].Ploshcha = 3; 
    Fig[2].geometric_figure = "Square";  Fig[2].Ploshcha = 4;  
    Fig[3].geometric_figure = "Rectangle";  Fig[3].Ploshcha = 4;  
    Fig[4].geometric_figure = "Pentagon";  Fig[4].Ploshcha = 2;  
    
    output(Fig); 
    delete []Fig;
    cin.get();
    return 0;
}
но, кажется, не сортирует всё же...
Yandex
Объявления
07.12.2013, 02:11     Структуры, объединения и типы пользователя
Ответ Создать тему
Опции темы

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