сегодня до 11:30! На С++! Один элемент (автомобиль) представляет собой структуру с полями: фамилия владельца, марка автомобиля, требуемая марка бензина, мощность двигателя, объём бака, остаток бензина, объем масла, дата техосмотра. Дана фиксированная цена литра бензина и заливки масла. Поиск и сортировка по марке автомобиля, мощности двигателя, дате тех осмотра
// ConsoleApplication14.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#
#include <iostream>
#include "Car.h"
#include <ctime>
#include <vector>
#include <chrono>
#include <string>
#include <algorithm>
#include <Windows.h>
bool myfunction(Car i, Car j) { return (i.power < j.power); }
bool myfunction2(Car i, Car j) { return (i.brand_name_car < j.brand_name_car); }
bool myfunction1(Car i, Car j) { return (i.date_service < j.date_service); }
double getdouble() {
double a;
std::cin >> a;
return a;
}
void help() {
std::cout << "Поиск - 0" << std::endl;
std::cout << "Сортировка - 1" << std::endl;
std::cout << "Вывод - 2" << std::endl;
std::cout << "Выход - 3" << std::endl;
}
void refresh(std::vector<Car> cars) {
for (size_t i = 0; i < cars.size(); i++)
{
cars[i].print();
}
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
std::srand(std::time(0));
std::cout << "Загрузка 100 человек" << std::endl;
std::vector<Car> cars;
std::string surnames[] = { "Смирнов", "Иванов", "Кузнецов", "Соколов", "Попов", "Лебедев", "Козлов", "Новиков", "Морозов", "Петров",
"Волков","Соловьёв","Васильев","Зайцев","Павлов","Семёнов","Голубев","Виноградов","Богданов","Воробьёв","Фёдоров","Михайлов","Беляев",
"Тарасов","Белов","Комаров","Орлов","Киселёв","Макаров","Андреев","Ковалёв","Ильин","Гусев","Титов","Кузьмин","Кудрявцев","Баранов",
"Куликов","Алексеев","Степанов","Яковлев","Сорокин","Сергеев","Романов","Захаров","Борисов","Королёв","Герасимов","Пономарёв","Григорьев","Лазарев","Медведев","Ершов","Никитин","Соболев","Рябов","Поляков","Цветков","Данилов","Жуков","Фролов","Журавлёв","Николаев",
"Крылов","Максимов","Сидоров","Осипов","Белоусов","Федотов","Дорофеев","Егоров","Матвеев","Бобров" };
std::string petrol_marks[] = { "А-72", "А-76", "А-80", "АИ-91", "А-92", "АИ-93", "АИ-95", "А-96", "АИ-98" };
std::string car_brand[] = { "Aurus","LADA","ВОЛГА","ЗИЛ","МОСКВИЧ","ГАЗ","УАЗ","КАМАЗ" };
for (int i = 0; i < 100; i++) {
Car car = { surnames[std::rand()%73],car_brand[std::rand()%8],petrol_marks[std::rand()%9], std::rand()%300+100, std::rand()%100+10, std::rand()%50+10,std::rand()%10+5,std::time(0)+std::rand()*std::rand() };
car.print();
cars.push_back(car);
}
//delete[] surnames;
//delete[] petrol_marks;
//delete[] car_brand;
std::cout << "Введите цену литра бензина ";
const double price_petrol = getdouble();
std::cout << "Цена бензина за литр " <<price_petrol<<std::endl;
std::cout << "Введите цену заливки масла ";
const double price_oil = getdouble();
std::cout << "Цена заливки масла " << price_oil << std::endl;
while (true)
{
help();
int choice = 0;
std::cin >> choice;
std::string query = "";
int ch2;
if (choice < 2 && choice >= 0) {
std::cout << "марка - 0" << std::endl;
std::cout << "мощность - 1" << std::endl;
std::cout << "дата техосмотра - 2" << std::endl;
std::cin >> ch2;
}
switch (choice) {
case 0:
std::cout << "Поиск: ";
std::cin >> query;
for (int i = 0; i < cars.size(); i++) {
switch (ch2)
{
case 0:
if (cars[i].brand_name_car == query) {
cars[i].print();
}
break;
case 1:
if (cars[i].power == std::stod(query)) {
cars[i].print();
}
break;
case 2:
if (cars[i].date_service == std::stol(query)) {
cars[i].print();
}
break;
}
}
break;
case 1:
switch (ch2)
{
case 0:
std::sort(cars.begin(), cars.end(), myfunction2);
refresh(cars);
break;
case 1:
std::sort(cars.begin(), cars.end(), myfunction);
refresh(cars);
break;
case 2:
std::sort(cars.begin(), cars.end(), myfunction1);
refresh(cars);
}
break;
case 2:
refresh(cars);
break;
case 3:
return 0;
break;
default:
help();
break;
}
}
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Car.h
#pragma once
#ifndef CAR_H
#define CAR_H
#include <iomanip>
struct Car
{
std::string surname;
std::string brand_name_car;
std::string mark_petrol;
double power;
double volume_tank;
double balance_petrol;
double volume_oil;
time_t date_service;
public: void print() {
using namespace std;
struct tm* local;
local = localtime(&date_service);
cout << left<< setw(15)<< surname << setw(10) << brand_name_car << setw(10) << mark_petrol << setw(10) << power<< setw(10) <<volume_tank << setw(10) << balance_petrol << setw(10) << volume_oil<< setw(10) << asctime(local) << std::endl;
}
};
#endif