Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2022, 21:23   #1
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
Восклицание Составить программу учета заявок на авиабилеты. Каждая заявка содержит: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. Программа должна обеспечивать вы

Составить программу учета заявок на авиабилеты.
Каждая заявка содержит: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
 добавление заявок в список;
 удаление заявок;
 вывод заявок по заданному номеру рейса и дате вылета;
 вывод всех заявок, упорядоченных по пунктам назначения;
 вывод всех заявок, упорядоченных по датам вылета.
Хранение данных организовать с применением контейнерного класса unordered_multimap, в качестве ключа использовать «пункт назначения».

Я знаю и видел много таких заданий,но именно с применением контейнерного класса unordered_multimap не встречал,СПАСАЙТЕ ГОСПОДА
nonameii3ii вне форума Ответить с цитированием
Старый 21.05.2022, 22:13   #2
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Есть вот такое только тут используется set,помогите переделать на unordered_map
Код:
Сделал удаление,но прошу помочь передалать на unordered_map:
[CPP]#include <iostream>
#include <set>
#include <string>
#include <cstdlib>
#include <clocale>
#include<unordered_map>
#include <conio.h>
using namespace std;


class Airplane
{
public:
	Airplane() {} // конструктор по-умолчанию
	// аргументированные конструкторы, используют список инициализации
	Airplane(int flightnumber, const string &destination, const string &surname,string& departuredate) :
		flightnumber_(flightnumber), destination_(destination), surname_(surname), departuredate_(departuredate){}
	// для поиска по значению number
	Airplane(int flightnumber) : flightnumber_(flightnumber) {}

	// get-методы. модификатор const после функции указывает, что она не
	// изменяет состояние класса (все свойства остаются теми же)
	int    getflightnumber()  const { return flightnumber_; }
	string getdestination() const { return destination_; }
	string getsurname()    const { return surname_; }
	string getdeparturedate()const { return departuredate_; }

private:
	int flightnumber_; // поля класса
	string destination_;
	string surname_;
	string departuredate_;
};

// определяем оператор сравнения двух объектов класса. Необходимо для
// использования объектов в контейнере set (ключ сортировки будет number)
bool operator < (const Airplane &t1, const Airplane &t2)
{
	return t1.getflightnumber() < t2.getflightnumber(); // если t1.number_ меньше, то истина
}

// перегружаем оператор вывода в поток, чтобы научить выводить объекты класса
ostream& operator << (ostream &out, const Airplane &t)
{
	out << "Номер поезда: " << t.getflightnumber() << endl // формируем поток
		<< "Станция назначения: " << t.getdestination() << endl
		<< "Время прибытия: " << t.getsurname() << endl
	    << "Желаемая дата вылета: " << t.getdeparturedate() << endl;
	return out; // возвращаем ссылку на сформированный поток
}


int main()
{
	setlocale(LC_ALL, ""); // настраиваем консоль на ввод/вывод русских символов
	set<Airplane> tset; // Создаем set-контейнер объектов класса Train
	char choise = '1'; // выбор в меню
	while (choise != '0')
	{
		system("cls"); // очистка экрана
		cout << "Что желаете сделать?\n"
			<< "1. Добавить заявку в список\n"
			<< "2. Вывести все заявки\n"
			<< "3. Поиск заявок по заданному номеру рейса и дате вылета \n"
			<< "4. Поиск  заявок, упорядоченных по пунктам назначения\n"
			<<"5.Поиск заявок, упорядоченных по датам вылета\n"
			<< "6.Удаление всех заявок\n"
			<< "0. Выход\n\n"
			<< "Ваш выбор: ";
		cin >> choise;
		switch (choise)
		{
		case '1':
		{// фигурные скобки чтобы переменные объявленные тут были локальными
			int flightnumber;
			string destination, surname, departuredate;
			system("cls"); // очистка экрана
			cout << "Введите номер рейса: ";
			cin >> flightnumber;
			cout << "Введите пункт назначения: ";
			cin >> destination;
			cout << "Введите фамилию и инициалы пассажира: ";
			cin >> surname;
			cout << "Введите желаемую дату вылета:(Например 21.05.2022) ";
			cin >> departuredate;
			// добавляем новый объект класса Train вызывая аргументированный
			// конструктор и передавая ему параметры
			tset.insert(Airplane(flightnumber, destination, surname, departuredate));
			break;
		}

		case '2':
			system("cls");
			if (tset.empty()) // если контейнер пуст
			{
				cout << "БД пуста, добавьте для начала элементы";
				_getch(); // пауза
				break;
			}
			// пробегаемся по всему контейнеру от начала до конца
			// it - итератор (грубо говоря указатель) на объект класса Train
			for (set<Airplane>::iterator it = tset.begin();
				it != tset.end(); ++it)
				cout << *it << endl; // уже умеет выводить объект на экран
			_getch(); // пауза
			break;

		case '3':
		{
			system("cls");
			if (tset.empty()) // если контейнер пуст
			{
				cout << "БД пуста, добавьте для начала элементы";
				_getch(); // пауза
				break;
			}
			int flightnumber;
			cout << "Введите номер рейса:";
			cin >> flightnumber;
			 string departuredate;
			cout << "Введите желаемую дату вылета:(Например 21.05.2022) ";
			cin >> departuredate;
		
			// метод контейнера find вернет итератор на искомый объект, если
			// совпадений нет, то станет равным концу контейнера (set.end())
			// Происходит поиск по уникальному ключу
			set<Airplane>::iterator it = tset.find(flightnumber) ;
			if (it == tset.end())
				cout << "Нет сопадений";
			else
			
				if (it->getdeparturedate() == departuredate) // если совпадение
					cout << *it << endl;
			_getch(); // пауза
			break;

		}

		case '4':
		{
			system("cls");
			if (tset.empty()) // если контейнер пуст
			{
				cout << "БД пуста, добавьте для начала элементы";
				_getch(); // пауза
				break;
			}
			string destination;
			cout << "Введите пункт назначения: ";
			cin >> destination;
			// поиск с помощью метода find не сработает, т.к. string station
			// не является ключом контейнера (элементом, по которому идет
			// сравнение при добавлении. Вдобавок, объектов со схожим полем
			// может быть несколько, поэтому просто перебираем весь
			// контейнер и при совпадении выводим на экран
			for (set<Airplane>::iterator it = tset.begin();
				it != tset.end(); ++it)
				if (it->getdestination() == destination) // если совпадение
					cout << *it << endl;
			_getch(); // пауза
			break;
		}
		case '5':
		
		{
			system("cls");
			if (tset.empty()) // если контейнер пуст
			{
				cout << "БД пуста, добавьте для начала элементы";
				_getch(); // пауза
				break;
			}
			string departuredate;
			cout << "Введите желаемую дату вылета:(Например 21.05.2022) ";
			cin >> departuredate;
			// поиск с помощью метода find не сработает, т.к. string station
			// не является ключом контейнера (элементом, по которому идет
			// сравнение при добавлении. Вдобавок, объектов со схожим полем
			// может быть несколько, поэтому просто перебираем весь
			// контейнер и при совпадении выводим на экран
			for (set<Airplane>::iterator it = tset.begin();
				it != tset.end(); ++it)
				if (it->getdeparturedate() == departuredate) // если совпадение
					cout << *it << endl;
			_getch(); // пауза
			break;
		
		}
		case '6':
		{// фигурные скобки чтобы переменные объявленные тут были локальными
			int flightnumber;
			string destination, surname, departuredate;
			
			tset.clear();
			break;
		}
		
		case '0':
			break;

		default:
			cout << "Неверный ввод, повторите попытку";
			_getch();
			break;
		} // конец switch (choise)
	} // конец цикла while (choise != '0')

	cout << "\n\nДо свидания!\n";

	return 0; // завершилось без ошибок
}[/CPP]

Последний раз редактировалось nonameii3ii; 22.05.2022 в 00:02.
nonameii3ii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу, которая содержит текущую информацию о заявках на авиабилеты. Каждая заявка содержит: •пункт назначения •номер рейса •фамилию и инициалы пассажира •желаемую дату вылеты П al_30 Паскаль, Turbo Pascal, PascalABC.NET 2 01.12.2020 22:55
задание по основам программирования! - Pascal ABC - В одной строке ввести фамилию, имя, отчество. Вывести на экран фамилию и инициалы. love26 Паскаль, Turbo Pascal, PascalABC.NET 1 19.04.2018 14:35
Составить программу, которая содержит текущую информацию о заявках на авиабилеты. dima2308 Общие вопросы C/C++ 4 19.03.2017 13:47
программа учета заявок staniiislav Microsoft Office Excel 13 13.09.2015 11:38
Дан файл Т, который содержит номера телефонов сотрудников учреждения указывается:фамилия, инициалы и номер телефона. BLADIMIR Помощь студентам 1 27.10.2011 12:07