// 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
1.Составные , или структурные , типы данных , в отличие от простых, задают множества сложных значений с одним общим именем. Можно сказать, что структурные типы определяют некоторый образования новых типов данных на основе уже имеющихся. Таким образом, возможно образование структур данных произвольной сложности, позволяя тем самым достичь адекватного представления в программе тех данных, с которыми она оперирует.
2.Количество полей записи может быть любым. Поле записи может иметь практически любой тип. Но поле записи может принимать участие во всех операциях, применимых к типу этого поля.
3.Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля, например: rec.
Объяснение: