сегодня до 11:30! На С++! Один элемент (автомобиль) представляет собой структуру с полями: фамилия владельца, марка автомобиля, требуемая марка бензина, мощность двигателя, объём бака, остаток бензина, объем масла, дата техосмотра. Дана фиксированная цена литра бензина и заливки масла. Поиск и сортировка по марке автомобиля, мощности двигателя, дате тех осмотра

Sergei12121 Sergei12121    2   10.06.2021 10:35    3

Ответы
маша9393 маша9393  10.07.2021 10:36

// 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

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика