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

Написать функцию поиска структур (записей) с заданными признаками - C++

Восстановить пароль Регистрация
 
Sacha080895
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 31
17.02.2014, 07:50     Написать функцию поиска структур (записей) с заданными признаками #1
Написать функцию поиска структур (записей) с заданными признаками (например, выбор структур по заданному диапазону значений элемента).
"Автомобиль":
марка; цвет; серийный номер; регистрационный номер; количество дверей; год выпуска; цена.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 07:50     Написать функцию поиска структур (записей) с заданными признаками
Посмотрите здесь:

C++ написать функцию для записи в файл массива структур
Написать функцию для записи в файл массива структур C++
Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (2,1) (3,0) (-1,0) C++
C++ Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (1,1) (0,2) (-1,0)
C++ Битовые операции (написать функцию для сброса в ноль двух битов с заданными номерами в коде символа)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
17.02.2014, 10:58     Написать функцию поиска структур (записей) с заданными признаками #2
Sacha080895, опишите структуру и меню, я вам напишу поиск по этой структуре
Sacha080895
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 31
18.02.2014, 13:16  [ТС]     Написать функцию поиска структур (записей) с заданными признаками #3
мне нужен массив структур и в нем выполнить поиск...сможете помочь?
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
18.02.2014, 14:59     Написать функцию поиска структур (записей) с заданными признаками #4
Sacha080895, да могу, но мне лень писать структуру, потому что поиск и объявление займет 4 строчки

Добавлено через 4 минуты
Sacha080895,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vector>
#include <iostream>
 
using namespace std;
 
struct Car
{
//описание
//
void Print();
}
 
void main()
{
vector<Car> V;
//заполнение массива V
 
//поиск красных машин допустим)
for(auto i : V)
  if ( i.Color=="red") i.Print();
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
18.02.2014, 17:18     Написать функцию поиска структур (записей) с заданными признаками #5
вот большущий пример:
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
#include <Windows.h>
#include <iostream>
#include <string>
 
struct Auto
{
    std::string mark;
    std::string color;
 
    size_t price;
    size_t doorsCount;
    size_t editionYear;
    size_t serialNumber;
    size_t registrationNumber;
};
 
void inputData(Auto *ptrData, size_t dataSize);
void searchData(Auto *ptrData, size_t dataSize);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    size_t dataSize;
    std::cout << "Введите кол-во автомобилей для записи в структуру: ";
    std::cin >> dataSize;
 
    Auto *data = new Auto [dataSize];
 
    inputData(data, dataSize);
    searchData(data, dataSize);
 
    delete [] data;
    data = nullptr;
 
    std::system("pause");
    return 0;
}
 
void inputData(Auto *ptrData, size_t dataSize)
{
    for (size_t i = 0; i < dataSize; i++) {
        std::system("cls");
        std::cout << "Данные об автомобиле №" << (i + 1) << ": " << std::endl;
        std::cin.sync();
 
        std::cout << "Марка автомобиля: ";
        std::getline(std::cin, ptrData[i].mark);
        std::cout << "Цвет автомобиля: ";
        std::getline(std::cin, ptrData[i].color);
 
        std::cout << "Серийный номер: ";
        std::cin >> ptrData[i].serialNumber;
        std::cout << "Регистрационный номер: ";
        std::cin >> ptrData[i].registrationNumber;
 
        std::cout << "Количество дверей: ";
        std::cin >> ptrData[i].doorsCount;
        std::cout << "Год выпуска: ";
        std::cin >> ptrData[i].editionYear;
        std::cout << "Цена: ";
        std::cin >> ptrData[i].price;
    }
}
 
void searchData(Auto *ptrData, size_t dataSize)
{
    std::system("cls");
    std::cout << "Выберите поиск по нужному критерию: " << std::endl;
    std::cout << "1. Марка" << std::endl;
    std::cout << "2. Цвет " << std::endl;
    std::cout << "3. Серийный номер" << std::endl;
    std::cout << "4. Регистрационный номер" << std::endl;
    std::cout << "5. Количество дверей " << std::endl;
    std::cout << "6. Год выпуска " << std::endl;
    std::cout << "7. Цена " << std::endl;
 
    size_t searchField;
    do {
        std::cin >> searchField;
    } while ((searchField < 1) && (searchField > 7));
 
    switch (searchField) {
        case 1:
            std::string userMark;
            std::cout << "Введите марку для поиска: ";
            std::cin.sync();
            std::getline(std::cin, userMark);
 
            std::cout << "Автомобили марки \"" << userMark << "\": " << std::endl;
            for (size_t i = 0; i < dataSize; i++) {
                if (ptrData->mark == userMark) {
                    std::cout << "-----------------------------------" << std::endl;
                    std::cout << "Цвет автомобиля: " << ptrData[i].color << std::endl;
                    std::cout << "Серийный номер: " << ptrData[i].serialNumber << std::endl;
                    std::cout << "Регистрационный номер: " << ptrData[i].registrationNumber << std::endl;
                    std::cout << "Количество дверей: " << ptrData[i].doorsCount << std::endl;
                    std::cout << "Год выпуска: " << ptrData[i].editionYear << std::endl;
                    std::cout << "Цена: " << ptrData[i].price << std::endl;
                    std::cout << "-----------------------------------" << std::endl;
                }
            }
            break;
    }
}
в case'ах дописывайте все остальные поля по образцу
Sacha080895
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 31
18.02.2014, 20:54  [ТС]     Написать функцию поиска структур (записей) с заданными признаками #6
Спасибо! Очень помогли...

Добавлено через 42 минуты
С маркой и цветом понятно, покажите пример кейса с одним из этих признаков -
C++
1
2
3
4
5
    size_t price;
    size_t doorsCount;
    size_t editionYear;
    size_t serialNumber;
    size_t registrationNumber;
И еще, почему выводит весь список автомобилей а не один который я ищу, например: заполнил массив есть автомобиль mazda выполняю поиск по марке она выводит данные мазды и всех остальных тоже...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 23:40     Написать функцию поиска структур (записей) с заданными признаками
Еще ссылки по теме:

Написать функцию сравнения двух структур с объединениями, содержащих комплексное число C++
C++ Написать функцию, принимающую массив структур Student
C++ Написать функцию sort() для сортировки массива структур

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

Или воспользуйтесь поиском по форуму:
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
18.02.2014, 23:40     Написать функцию поиска структур (записей) с заданными признаками #7
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
C++
1
if (ptrData->mark == userMark) {
это поменяйте на
C++
1
if (ptrData[i].mark == userMark) {
Yandex
Объявления
18.02.2014, 23:40     Написать функцию поиска структур (записей) с заданными признаками
Ответ Создать тему
Опции темы

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