0 / 0 / 0
Регистрация: 08.04.2017
Сообщений: 17
1

Реализовать поиск по заданному полю в массиве объектов пользовательского типа (структуры)

13.09.2017, 17:00. Показов 1470. Ответов 2
Метки нет (Все метки)

Добрый вечер! Помогите решить данную задачу, сколько ни пытался, ни в инете, ни сам не могу написать.
Задача: Одна запись о предмете мебели содержит следующий порядок: Артикул, Наименование, Цвет, Стоимость, Дата
Изготовления, Количество в наличии имеющихся экземпляров.
Поиск и сортировка - По артикулу.
Кол-во экземпляров - По дате изготовления.
Метод сортировки - Перемешиванием (Шейкерная).
Язык - с++.

В задаче использовать массив структур статический. Описать структуру и адаптировать. Сортировать, а потом сделать бинарный поиск.

Буду очень благодарен!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2017, 17:00
Ответы с готовыми решениями:

Реализовать поиск в массиве объектов пользовательского типа по заданному полю (структуры)
1) В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа
Все сделал, в своей задачи, осталось только вот это, помогите. Вывод на экран информацию о людях,...

Реализовать поиск в массиве объектов пользовательского типа по заданному полю
Создать типизированный файл, элементами которого являются сведения об автомобилях: марка,...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа
ОСНОВЫ ОБРАБОТКИ СТРУКТУР С клавиатуры ввести последовательность записей, содержащих информацию...

2
237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
13.09.2017, 20:27 2
Лучший ответ Сообщение было отмечено vladson78 как решение

Решение

Примерно как-то так. Переделывай как тебе нужно.
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
#include <string>
 
class Furniture
{
protected:
    std::string name;
    double price;
    unsigned total;
    std::string vendor_code;
    std::string color;
    std::string date;
public:
    Furniture(void) : name("none"), price(0.0), total(0U), vendor_code("none"), color("none"), date("01.01.1970") {};
    Furniture(std::string _n, double _p, unsigned _t, std::string _v, std::string _c, std::string _d)
        : name(_n), price(_p), total(_t), vendor_code(_v), color(_c), date(_d) {};
    Furniture(const Furniture&) = default;
    Furniture& operator = (const Furniture&) = default;
    ~Furniture(void) = default;
    
    void SetName(const std::string &_n) { this->name = _n; }
    void SetPrice(double _p) { this->price = _p; }
    void SetTotal(unsigned _t) { this->total = _t; }
    void SetVendorCode(const std::string &_v) { this->vendor_code = _v; }
    void SetColor(const std::string &_c) { this->color = _c; }
    void SetDate(const std::string &_d) { this->date = _d; }
    
    std::string GetName(void) const { return this->name; }
    double GetPrice(void) const { return this->price; }
    unsigned GetTotal(void) const { return this->total; }
    std::string GetVendorCode(void) const { return this->vendor_code; }
    std::string GetColor(void) const { return this->color; }
    std::string GetDate(void) const { return this->date; }
    
    friend std::ostream& operator << (std::ostream &os, const Furniture &rhs)
    {
        return os << "Name: " << rhs.name << std::endl
            << "Price: " << rhs.price << std::endl
            << "Total: $" << rhs.total << std::endl
            << "Vendor Code: " << rhs.vendor_code << std::endl
            << "Color: " << rhs.color << std::endl
            << "Date: " << rhs.date << std::endl
            << std::endl;
    }
    friend bool operator == (const Furniture &lhs, const Furniture &rhs)
    {
        return lhs.GetVendorCode() == rhs.GetVendorCode();
    }
    friend bool operator != (const Furniture &lhs, const Furniture &rhs)
    {
        return !(lhs == rhs);
    }
    friend bool operator < (const Furniture &lhs, const Furniture &rhs)
    {
        return lhs.GetVendorCode() < rhs.GetVendorCode();
    }
    friend bool operator > (const Furniture &lhs, const Furniture &rhs)
    {
        return lhs.GetVendorCode() > rhs.GetVendorCode();
    }
};
///================================
static const unsigned SIZE_FURS(5);
static Furniture furs[SIZE_FURS];
///================================
inline void Delimiter(void);
void ShakerSort(void);
Furniture* SearchByVendorCode(const std::string &element);
unsigned NumberOfCopies(const std::string &date);
void Print(void);
///================================
int main()
{
    furs[0].SetVendorCode("C");
    furs[1].SetVendorCode("C++");
    furs[2].SetVendorCode("Python");
    furs[3].SetVendorCode("Cyberforum");
    furs[4].SetVendorCode("Go");
    furs[4].SetTotal(10);
    furs[1].SetTotal(50);
    furs[2].SetTotal(20);
    furs[3].SetTotal(0);
    furs[4].SetTotal(55);
    
    ShakerSort();
    Print();
    Furniture *found = SearchByVendorCode("Python");
    std::cout << *found << std::endl;
    std::cout << "NumberOfCopies: " << NumberOfCopies("01.01.1970") << std::endl;
}
///================================
inline void Delimiter(void)
{
    std::cout << "--------------------" << std::endl;
}
 
void ShakerSort(void)
{
    for (unsigned i(0U), n(SIZE_FURS - 1U); i < n; i++, n--)
    {
        for (unsigned j(i); j < n; j++)
            if (furs[j] > furs[j + 1U])
            {
                std::swap(furs[j], furs[j + 1U]);
            }
        for (unsigned j(n - 1U); j > i; j--)
            if (furs[j] < furs[j - 1])
            {
                std::swap(furs[j], furs[j - 1U]);
            }
    }
}
 
Furniture* SearchByVendorCode(const std::string &element)
{
    Furniture *endIt = furs + SIZE_FURS;
 
    Furniture *left = furs;
    Furniture *right = endIt;
 
    if (furs[0].GetVendorCode() > element
        || furs[SIZE_FURS - 1U].GetVendorCode() < element)
        return endIt;
    while ((right -  left) > 0) {
        Furniture *mid = left + (right - left) / 2;
        if (element <= mid->GetVendorCode())
            right = mid;
        else
            left = mid + 1;
    }
    if (right->GetVendorCode() == element)
        return right;
    return endIt;
}
 
unsigned NumberOfCopies(const std::string &date)
{
    unsigned total(0U);
    for (unsigned i(0U); i < SIZE_FURS; i++)
        if (furs[i].GetDate() == date)
            total += furs[i].GetTotal();
    return total;
}
 
void Print(void)
{
    Delimiter();
    std::cout << "Print: " << std::endl
        << std::endl;
    for (unsigned i(0U), count(0U); i < SIZE_FURS; ++i)
    {
        std::cout << "Furniture #" << ++count << std::endl
            << furs[i] << std::endl;
    }
    Delimiter();
}
0
0 / 0 / 0
Регистрация: 08.04.2017
Сообщений: 17
13.09.2017, 20:34  [ТС] 3
Спасибо огромное! Не знаю даже как и отблагодарить)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2017, 20:34
Помогаю со студенческими работами здесь

Реализовать поиск по заданному полю в массиве пользовательского типа (структуры)
Для определенной пользователем структуры выполнить следующее: • Написать функцию формирования...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа PRICE
Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа (структура Student)
Описать переменную студент, содержащию имя, фамилию, отчество, название учебного заведения и...

Реализовать поиск и сортировку по заданному полю в массиве объектов пользовательского типа (структура Train)
Описать структуру с именем TRAIN, содержащую следующие поля: NAZV - название пункта назначения,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru