Mag1str
@Mag1str

Массивы структур?

Задача:
Известны данные о стоимости каждой из 15 моделей автомобилей и о их тип (легковой или грузовой). Найти среднюю стоимость легковых автомобилей.

Вот что я пока что написал, как далее расчитать не знаю
#include <iostream>
#include <string.h>

using namespace std;

struct Auto
{
	char marka[15];
	int tup, price;
};

void Auto_desh(struct Auto *m, int n);

int main()
{
	const int n=2;
	Auto M[n];

	string marka [15]{
	"BMW", "Audi"};
	
	string tup [15]{
	"Vaz", "Leh"};
	
	string price [15]{
	"1000", "500"};
	
	cout<<"E taki auto\t";
	for (int i = 0; i < n; i++) {
	cout<<marka[i]<<"\t"<<tup[i]<<"\t"<<price[i]<<endl;
	}
return 0;
}
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
edward_freedom
@edward_freedom
#include "stdafx.h"
#include <iostream>
#include "list"
#include <algorithm>
#include <sstream>
#include <string>
using namespace std;

class Car {
public:
	enum Type
	{
		Passenger,
		Cargo
	};
	int Price;
	string Model;
	Type TypeAuto;
	

	Car(int price, string model, Type type) {
		this->Model = model;
		this->Price = price;
		this->TypeAuto = type;
	}
	string ToString() {

		std::stringstream result;
		result << "Model: " << this->Model <<
			", Price: " << this->Price <<
			", Type: " << this->TypeAuto;
		return result.str();
	}
};

class FilterCars {
public:
	list<Car> Cars;
	int AveragePrice;
	FilterCars(list<Car> cars, int averagePrice) {
		this->Cars = cars;
		this->AveragePrice = averagePrice;
	}
};

void ShowCars(list<Car> cars) {
	for (auto  car : cars) {
		std::cout << car.ToString() << endl;;
	}
}

FilterCars AveragePriceByType(list<Car> cars, Car::Type type) {
	list<Car> selectCars;
	std::copy_if(cars.begin(), cars.end(), std::back_inserter(selectCars), [type](Car car) {
		return car.TypeAuto == type;
	});
	auto prices = 0;
	for (auto car : selectCars) {
		prices += car.Price;
	}
	auto average = prices / selectCars.size();
	return FilterCars(selectCars, average);
}



int main()
{
	setlocale(LC_ALL, "russian");

	auto cars = {
		Car(40000, "Tesla", Car::Type::Passenger),
		Car(34000, "Chevrolet", Car::Type::Passenger),
		Car(324000, "Mercedes ", Car::Type::Passenger),
		Car(114000, "Volvo ", Car::Type::Cargo),
		Car(222000, "BMW ", Car::Type::Cargo),
	};

	

	auto cargo = AveragePriceByType(cars, Car::Type::Cargo);
	auto passenger = AveragePriceByType(cars, Car::Type::Passenger);
	
	cout << "Вывод грузовых автомобилей: " << endl;
	ShowCars(cargo.Cars);
	cout << "Средняя цена грузовых автомобилей: " << cargo.AveragePrice << endl << endl;

	cout << "Вывод легковых автомобилей: " << endl;
	ShowCars(passenger.Cars);
	cout << "Средняя цена легковых автомобилей: " << passenger.AveragePrice << endl << endl;

	system("pause");


    return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы