Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Olegts94
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 16
1

Enumerators and calculus

08.03.2015, 13:34. Просмотров 486. Ответов 10
Метки нет (Все метки)

Hi everyone. I want ask you. Can you help me to add some additional functions into my project. These are 2 functions which should be added:
1) Choose one abstraction’s property for which the type is int, unsigned, or double and implement non-class function double avg_<property-name>(const Inventory & inv), that returns calculated average value among the inventory items.
2) Demonstrate calling function Inventory::find(…​) by providing values only for subset of properties. Also demonstrate calling of functions max_<property-name>(…​) and avg_<property-name>(…​)
THANK YOU!
ConsoleApplication2.0.rar
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2015, 13:34
Ответы с готовыми решениями:

Enumerators
Здравствуйте. У меня есть список. Я пробегаю по нему форичем, но могу сделать это только один раз....

Lambda calculus
Необходимо выразить F, такую, что \forall M :\ \ \ F M = M F Не получается разобраться с Y...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
08.03.2015, 14:06 2
Please, place your code here, using tag "С++". Thank you.
0
Olegts94
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 16
08.03.2015, 14:12  [ТС] 3
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
#include <string>
#include <iostream>
#include "Inventory.h"
#include "Vehicle.h"
using namespace std;
void fill_inventory(Inventory& inventory){
    inventory.add("Lamborghini ","Black Rose ", 200000, vehicle::Cartype::LUXURY, true , true);
    inventory.add("BMW ", "X-ray 3",92000, vehicle::Cartype::SPORT, true, false);
    inventory.add("Volvo ", "TD802 ", 100000, vehicle::Cartype::CROSSOVER, false, true);
    inventory.add("Kia ", "Sportage ", 50000, vehicle::Cartype::FAMILY, false, false);
    inventory.add("SsangYong ", "XP231 ", 65000, vehicle::Cartype::CROSSOVER, true, true);
    inventory.add("Toyota ", "Apsent ", 45000, vehicle::Cartype::SPORT, false, true);
    inventory.add("Ford ", "Suburban ", 80000, vehicle::Cartype::FAMILY, false, false);
    inventory.add("Mercedes ", "McLaren500 ", 250000, vehicle::Cartype::LUXURY, true, true);
}
void demo(vehicle& vehicle){
    cout << "Manufacturer: " << vehicle.get_brand() << " "
        << "Model: " << vehicle.get_model() << " "
        << "Cost: " << vehicle.get_cost() << " "
        << "Turboboost: " << (vehicle.has_turboboost() ? "exist" : "none") << endl;
}
 
int main(){
    Inventory inventory;
    inventory.init();
    fill_inventory(inventory);
 
    vehicle query_first;
    query_first.init("Lamborghini ", "Black Rose ", 200000, vehicle::Cartype::LUXURY, true, true);
    vehicle vehicle_first = inventory.find(query_first);
    demo(vehicle_first);
 
    vehicle query_second;
    query_second.init("BMW ", "X-ray 3", 92000, vehicle::Cartype::SPORT, true, false);
    vehicle vehicle_second = inventory.find(query_second);
    demo(vehicle_second);
 
    vehicle query_third;
    query_third.init("Volvo ", "TD802 ", 100000, vehicle::Cartype::CROSSOVER, false, true);
    vehicle vehicle_third = inventory.find(query_third);
    demo(vehicle_third);
 
    vehicle query_forth;
    query_forth.init("Kia ", "Sportage ", 50000, vehicle::Cartype::FAMILY, false, false);
    vehicle vehicle_forth = inventory.find(query_forth);
    demo(vehicle_forth);
 
    vehicle query_fifth;
    query_fifth.init("SsangYong ", "XP231 ", 65000, vehicle::Cartype::CROSSOVER, true, true);
    vehicle vehicle_fifth = inventory.find(query_fifth);
    demo(vehicle_fifth);
 
    vehicle query_sixth;
    query_sixth.init("Toyota ", "Apsent ", 45000, vehicle::Cartype::SPORT, false, true);
    vehicle vehicle_sixth = inventory.find(query_sixth);
    demo(vehicle_sixth);
 
    vehicle query_seventh;
    query_seventh.init("Ford ", "Suburban ", 80000, vehicle::Cartype::FAMILY, false, false);
    vehicle vehicle_seventh = inventory.find(query_seventh);
    demo(vehicle_seventh);
 
    vehicle query_last;
    query_last.init("Mercedes ", "McLaren500 ", 250000, vehicle::Cartype::LUXURY, true, true);
    vehicle vehicle_last = inventory.find(query_last);
    demo(vehicle_last);
#ifndef NDEBUG
    cin.get();
#endif
    return 0;
}
vehicle.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <string>
#include "Vehicle.h"
using namespace std;
bool vehicle::init(string brand, string model, int cost, vehicle::Cartype size, bool turboboost, bool tuning){
    _brand = brand;
    _model = model;
    _cost = cost;
    _class = size;
    _turboboost = turboboost;
    _tuning = tuning;
    return true;
}
Inventory.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <string>
#include "Vehicle.h"
#include "Inventory.h"
using namespace std;
void Inventory::add(string brand, string model, int cost, vehicle::Cartype size, bool turboboost, bool tuning){
    if (_size < INVENTORY_MAX_CLASS)
    {
        vehicle temp;
        temp.init(brand, model, cost, size, turboboost, tuning); 
        if(find(temp).get_brand() != brand)
            items[_size++] = temp;
    }
}
vehicle Inventory::find(vehicle& query){
    for (size_t i = 0; i < _size; i++){
        vehicle& vehicle = items[i];
        if (query.get_brand() != vehicle.get_brand())
            continue;
        if (query.get_model() != vehicle.get_model())
            continue;
        if (query.get_cost() != vehicle.get_cost())
            continue;
        if (query.get_size() != vehicle.get_size())
            continue;
        if (query.has_turboboost() != vehicle.has_turboboost())
            continue;
        if (query.has_tuning() != vehicle.has_tuning())
            continue;
        
        return vehicle;
    }
    return vehicle();
}
Inventory.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
#include "Vehicle.h"
using namespace std;
class Inventory{
public:
    void init() { _size = 0; }
    void add(string brand, string model, int cost, vehicle::Cartype size, bool turboboost, bool tuning);
    vehicle find(vehicle& query);
    size_t get_class() { return _size; }
    vehicle get_item(size_t i){
        return i < _size ? items[i] : vehicle();
    }
private:
    size_t _size;
    static const short INVENTORY_MAX_CLASS = 100;
    vehicle items[INVENTORY_MAX_CLASS];
};
vehicle.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#pragma once
#include <string>
using namespace std;
class vehicle{
public:
    enum class Cartype{ SPORT, LUXURY, FAMILY, CROSSOVER };
    bool init(string brand, string model, int cost, Cartype size, bool turboboost, bool tuning);
    string get_brand() {
        return _brand; 
    }
    string get_model() {
        return _model;
    }
    int get_cost() { 
        return _cost; 
    }
    Cartype get_size() {
        return _class;
    }
    bool has_turboboost() {
        return _turboboost;
    }
    bool has_tuning() {
        return _tuning;
    }
private:
    string _brand;
    int _cost;
    bool _turboboost;
    Cartype _class;
    bool _tuning;
    string _model;
};
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
08.03.2015, 14:24 4
Цитата Сообщение от Olegts94 Посмотреть сообщение
returns calculated average
Average of .. what? Only one object?
0
Olegts94
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 16
08.03.2015, 14:25  [ТС] 5
Yes, returns of average and maximum value of Cost in this case. Thank You!
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
08.03.2015, 14:36 6
May be, I don't understand something... but one object contains only one field _cost, for example.
How can I calculate average and maximum of that value?
0
MakeEasy
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
08.03.2015, 14:38 7
C++
1
2
3
4
5
6
7
double avg_cost(Inventory& inventory){
    double sum = 0.0;
    for(int i = 0; i < inventory.count(); ++i){
        sum += inventory.get_item(i).get_cost();
    }
    return sum/inventory.count();
}
For this function you should add method count() in class Inventory :
C++
1
2
3
int Inventory::count(){
    return _size;
}
1
Olegts94
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 16
08.03.2015, 14:45  [ТС] 8
I think to calculate average value of cost from the all cars cost value. Thank You.

Добавлено через 6 минут
Now I added this function but I do not have changes in my screen.
0
MakeEasy
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
08.03.2015, 14:47 9
Maybe you should call this function in main and print the return value? Something like this:
C++
1
std::cout << avg_cost(inventory);
0
Olegts94
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 16
08.03.2015, 14:54  [ТС] 10
No it does not display this value because of some problems. I do not know why. But I will try to do it. Thank You very much. It was so helpful for me.
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
08.03.2015, 14:58 11
I was wrong..
C++
1
2
3
4
5
6
7
double avg_cost( Inventory & inventory ) {
    double sum = 0;
    for ( int i = 0; i < inventory.get_class(); ++i ) {
        sum += inventory.get_item( i ).get_cost();
    }
    return sum / inventory.get_class();
}
1
08.03.2015, 14:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru