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

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

12.01.2017, 16:18. Показов 806. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Дали задачу "Запись о багаже пассажира содержит: фамилия, номер рейса, дата время вылета, пункт назначения, кол-во мест багажа, суммарный вес багажа. Написать программу которая выполняет поиск и сортировку по дате вылета, по пункту назначения, найти всех пассажиров у которых масса багажа выше допустимого".

Я в списках новичок и потому проблемы возникли еще в самом создании...всякие сортировки поиски пока не беру
К примеру фамилии и пункт назначения выводит только первую букву, а при попытке присвоить массив из фамилий и городов к типу string происходит ошибка при создании списка и говорит, что должен быть именно тип char.

Или при выводе даты начинает вывод какие то огромные числа хотя все сделано по правилам.

Я уже гуглил все что можно, искал похожие программы, но полезного ничего не нашел, потому прошу помощи)))
И еще задача именно со списками а не массивами)
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
#include <string>
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
 
struct date//даты
{
    int day;//день
    int month;//месяц
    int hour;//час
    int minute;//минута
};
 
 
struct route
{
    int number;//номер рейса
    char destination;//пункт назначение
    date time;
};
 
struct baggage
{
    char surname;//имя пассажира
    int amountBag;//количество мест багажа
    int sumbag;//суммарный вес багажа
    route pass;
};
 
struct Passenger//информация о багаже
{
    baggage info;
    Passenger* next;
};
 
void print(Passenger* head)//вывод списка на экран
{
 
    Passenger* temp = head;
    while(temp)
    {
        cout<<temp->info.surname<<"   \t";
        cout<<temp->info.pass.number<<"   \t\t";
        cout<<temp->info.pass.destination<<"   \t\t";
        cout<<temp->info.amountBag<<"                       ";
        cout<<temp->info.sumbag<<"   \t";
        cout<<temp->info.pass.time.day<<".";
        cout<<temp->info.pass.time.month<<"   ";
        cout<<temp->info.pass.time.hour<<":";
        cout<<temp->info.pass.time.minute<<"   "<<endl;
        
        temp = temp->next;
    }
}
 
void SetEl(Passenger* &head, Passenger* &tail, baggage x) //создание списка
{
    Passenger* c = new Passenger;
    c->info.amountBag = x.amountBag;
    c->info.pass.number = x.pass.number;
    c->info.pass.destination = x.pass.destination;
    c->info.pass.time.day= x.pass.time.day;
    c->info.sumbag = x.sumbag;
    c->info.surname = x.surname;
    c->next = 0;
    if(head)
    {
        tail->next = c;
        tail = c;
    }
    else
    {
        head = c;
        tail = c;
    }
 
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    srand(time(0));//рандомайзер
    Passenger* head = 0;
    Passenger* tail = 0;
    baggage c;
 
    char *surnames[40] = {"Ivanov", "Petrov", "Sidorov", "Arshavin", "Belova", "Antonova", "Muldashev", "Safina", "Struzhkina", "Levina","Ahmetova", "Eroshkin", "Vyihin", "Rashitov", "Semenov", "Lisina", "Karpova", "Stoyanov", "Evdokimova", "Shestov","Andreev", "Kozlov", "Kartoshkin", "Chubais", "Ulianova", "Larin", "Dementiev", "Nemtsova", "Dvinyatina", "Pulkin","Boyarskaya", "Stupka", "Shepkin", "Mikhailov", "Belogorodov", "Zhukov", "Maltsev", "Elkin", "Philatov", "Yarov"};
    char *cities[20] = {"Moscow", "Macao", "Paris", "Berlin", "Tokyo","Rome", "Nice", "Washington", "New-York", "Beijing","Cayro", "Prague", "London", "Buenos-Aires", "Mexico","Kiev", "Bratislava", "Madrid", "Sydney", "Rio-de-Janeiro"};
    //Массивы из фамилий и городов для случайного выбора
 
    cout<<"\tСписок пассажиров\n\n";
    cout << "Фамилия\t" << "Номер рейса\t" << "Пункт\t" << "Кол-во мест багажа\t" << "Масса багажа\t" << "Дата\t" << endl;
    cout << "====================================================================================================" << endl;
    for (int i=0; i<3; i++)
    {
    c.amountBag = rand()%10;
    c.pass.destination = (*cities[rand()%20]);//
    c.pass.number = rand()%1000;
    c.pass.time.day = rand()%28;
    c.pass.time.minute = rand()%59;
    c.pass.time.month = rand()%12;
    c.pass.time.hour = rand()%23;
    c.sumbag = rand()%25;
    c.surname = (*surnames[rand() % 40]);
    SetEl(head,tail,c);//создаем список
    print(head);//выводим на экран
    }
    _getch();
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2017, 16:18
Ответы с готовыми решениями:

Реализовать поиск по заданному полю в списке объектов пользовательского типа
Вечер добрый. Помогите с написанием кода Задание в dev c++ Описать структуру, содержащую следующие поля: • фамилия, имя; • номер...

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

Реализовать сортировку объектов пользовательского типа по заданному полю
Помогите организовать сортировку по полю класса id, уже голова пухнет void HomeLib::set_sortBook_ID() { Book* pv = beg; ...

2
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.01.2017, 16:54
Готовые списки из STL (list) использовать нельзя?
0
 Аватар для moskitos80
442 / 99 / 42
Регистрация: 04.10.2011
Сообщений: 359
12.01.2017, 17:27
Вы извините конечно, но вам бы Страуструпа почитать. Этот код конечно рабочий, но если бы он был лошадью я бы его застрелил...

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
#include <string>
#include <iostream>
#include <ctime>
 
using namespace std;
 
struct date//даты
{
    int day;//день
    int month;//месяц
    int hour;//час
    int minute;//минута
};
 
 
struct route {
    int number;//номер рейса
    char * destination;//пункт назначение
    date time;
};
 
struct baggage {
    char * surname;//имя пассажира
    int amountBag;//количество мест багажа
    int sumbag;//суммарный вес багажа
    route pass;
};
 
struct Passenger//информация о багаже
{
    baggage info;
    Passenger *next;
};
 
void print(Passenger *head)//вывод списка на экран
{
 
    Passenger *temp = head;
    while (temp) {
        cout << temp->info.surname << "   \t";
        cout << temp->info.pass.number << "   \t\t";
        cout << temp->info.pass.destination << "   \t\t";
        cout << temp->info.amountBag << "                       ";
        cout << temp->info.sumbag << "   \t";
        cout << temp->info.pass.time.day << ".";
        cout << temp->info.pass.time.month << "   ";
        cout << temp->info.pass.time.hour << ":";
        cout << temp->info.pass.time.minute << "   " << endl;
 
        temp = temp->next;
    }
}
 
void SetEl(Passenger *&head, Passenger *&tail, baggage x) //создание списка
{
    Passenger *c = new Passenger;
 
    c->info.amountBag = x.amountBag;
    c->info.pass.number = x.pass.number;
    c->info.pass.destination = x.pass.destination;
    c->info.pass.time.day = x.pass.time.day;
    c->info.pass.time.month = x.pass.time.month;
    c->info.pass.time.hour = x.pass.time.hour;
    c->info.pass.time.minute = x.pass.time.minute;
    c->info.sumbag = x.sumbag;
    c->info.surname = x.surname;
    c->next = 0;
 
    if (head) {
        tail->next = c;
        tail = c;
    } else {
        head = c;
        tail = c;
    }
 
}
 
int main() {
    setlocale(LC_ALL, "rus");
    srand(time(0));//рандомайзер
    Passenger *head = 0;
    Passenger *tail = 0;
    baggage c;
 
    char *surnames[40] = {"Ivanov", "Petrov", "Sidorov", "Arshavin", "Belova", "Antonova", "Muldashev", "Safina",
                          "Struzhkina", "Levina", "Ahmetova", "Eroshkin", "Vyihin", "Rashitov", "Semenov", "Lisina",
                          "Karpova", "Stoyanov", "Evdokimova", "Shestov", "Andreev", "Kozlov", "Kartoshkin", "Chubais",
                          "Ulianova", "Larin", "Dementiev", "Nemtsova", "Dvinyatina", "Pulkin", "Boyarskaya", "Stupka",
                          "Shepkin", "Mikhailov", "Belogorodov", "Zhukov", "Maltsev", "Elkin", "Philatov", "Yarov"};
 
    char *cities[20] = {"Moscow", "Macao", "Paris", "Berlin", "Tokyo", "Rome", "Nice", "Washington", "New-York",
                        "Beijing", "Cayro", "Prague", "London", "Buenos-Aires", "Mexico", "Kiev", "Bratislava",
                        "Madrid", "Sydney", "Rio-de-Janeiro"};
 
    //Массивы из фамилий и городов для случайного выбора
 
    cout << "\tСписок пассажиров\n\n";
    cout << "Фамилия\t" << "Номер рейса\t" << "Пункт\t" << "Кол-во мест багажа\t" << "Масса багажа\t" << "Дата\t"
         << endl;
    cout << "===================================================================================================="
         << endl;
 
    for (int i = 0; i < 3; i++) {
        c.amountBag         = rand() % 10;
        c.pass.destination  = cities[rand() % 20];//
        c.pass.number       = rand() % 1000;
        c.pass.time.day     = rand() % 28;
        c.pass.time.minute  = rand() % 59;
        c.pass.time.month   = rand() % 12;
        c.pass.time.hour    = rand() % 23;
        c.sumbag            = rand() % 25;
        c.surname           = surnames[rand() % 40];
        SetEl(head, tail, c);//создаем список
        print(head);//выводим на экран
    }
 
    return 0;
}
И самое главное у вас утечет память т.к. память из под списка Passenger не освобождается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2017, 17:27
Помогаю со студенческими работами здесь

Реализовать сортировку массива объектов пользовательского типа по заданному полю (структуры)
Есть перечень студентов, прибывших в лагерь по форме: ФИО, факультет, номер отряда. Упорядочить перечень по номерам отрядов, внутри отряда...

Реализовать поиск по заданному полю в списке объектов пользовательского типа (структура "Телефонная книга")
Дано задание, готово все, кроме последнего пункта, подскажите пожалуйста как реализовать его 20. Дан файл, содержащий сведения о...

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru