Форум программистов, компьютерный форум CyberForum.ru

Как добавить еще одну характеристику для класса - C++

Восстановить пароль Регистрация
 
dyap
2 / 2 / 0
Регистрация: 20.09.2010
Сообщений: 58
09.04.2011, 22:18     Как добавить еще одну характеристику для класса #1
Программа следующая: есть порт, 2 терминала разгрузки и 3 типа кораблей. Изначально у меня был только типо корабля и пользователь вводил количество кораблей одного типа. Теперь нужно добавить чтобы у каждого корабля был еще груз (который тоже вводит пользователь). Причем у кораблей одного типа может быть разный груз...
Main
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include "Terminal.h"
#include "Ship.h"
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    Terminal t1, t2;
    int x11, x12, x21, x22, x31, x32, y11, y12, y21, y22, y31, y32;
 
    cout<<"Введите время и стоимость разгрузки кораблей 1-го(до 50т) типа"<<endl<<"в 1 (медленном) терминале"<<endl;
    cin>>x11>>x12;
    cout<<"Введите время и стоимость разгрузки кораблей 2-го(до 200т) типа"<<endl<<" в 1 (медленном) терминале"<<endl;
    cin>>x21>>x22;
    cout<<"Введите время и стоимость разгрузки кораблей 3-го(до 600т) типа"<<endl<<" в 1 (медленном) терминале"<<endl;
    cin>>x31>>x32;
 
    cout<<"Введите время и стоимость разгрузки кораблей 1-го(до 50т) типа"<<endl<<" во 2 (быстром) терминале"<<endl;
    cin>>y11>>y12;
    cout<<"Введите время и стоимость разгрузки кораблей 2-го(до 200т) типа"<<endl<<" во 2 (быстром) терминале"<<endl;
    cin>>y21>>y22;
    cout<<"Введите время и стоимость разгрузки кораблей 3-го(до 600т) типа"<<endl<<" во 2 (быстром) терминале"<<endl;
    cin>>y31>>y32;
 
    t1.setTypeParameters(1,x11,x12);
    t1.setTypeParameters(2,x21,x22);
    t1.setTypeParameters(3,x31,x32);
    t2.setTypeParameters(1,y11,y12);
    t2.setTypeParameters(2,y21,y22);
    t2.setTypeParameters(3,y31,y32);
 
    int nShip1 = 0, nShip2 = 0, nShip3 = 0, nShip11 = 0, nShip12 = 0, nShip13 = 0, nShip21 = 0, nShip22 = 0, nShip23 = 0,n;
    cout<<"Введите количество кораблей 1 типа"<<endl;
    cin>>nShip1;
    cout<<"Введите количество кораблей 2 типа"<<endl;
    cin>>nShip2;
    cout<<"Введите количество кораблей 3 типа"<<endl;
    cin>>nShip3;
 
 
    Ship* ship = new Ship(3);
    t2.addShip(*ship);
    nShip3--;
    nShip23++;
    while (nShip1 + nShip2 + nShip3 >0)
    {
        int jType;
        Ship* s;
        if (t1.getTime() >= t2.getTime())
        {
            if (nShip3 > 0)
            {
                jType = 3;
                nShip3--;
                nShip23++;
            } 
            else if (nShip2 > 0)
            {
                jType = 2;
                nShip2--;
                nShip22++;
            } 
            else
            {
                jType = 1;
                nShip1--;
                nShip21++;
            }
            s = new Ship(jType);
            t2.addShip(*s);
        }
        else
        {
            if (nShip1 > 0)
            {
                jType = 1;
                nShip1--;
                nShip11++;
            } 
            else if (nShip2 > 0)
            {
                jType = 2;
                nShip2--;
                nShip12++;
            } else
            {
                jType = 3;
                nShip3--;
                nShip13++;
            }
            s = new Ship(jType);
            t1.addShip(*s);
        }
    }
    if (t1.getTime()>t2.getTime())
    {
        cout<<"Время работы порта:"<<t1.getTime()<<" "<<"час(a/ов)"<<endl;
    }
    else
    {
        cout<<"Время работы порта:"<<t2.getTime()<<" "<<"час(a/ов)"<<endl;
    }
    cout<<"Полученная прибыль:"<<t1.getCost()+t2.getCost()<<" "<<"рублей"<<endl;
    cout<<"В первом терминале разгружено: "<<nShip11<<"кораблей 1-го типа,"<<nShip12<<endl<<"кораблей 2-го типа,"<<nShip13<<" кораблей 3-го типа."<<endl;
    cout<<"Во втором терминале разгружено: "<<nShip21<<"кораблей 1-го типа,"<<nShip22<<endl<<"кораблей 2-го типа,"<<nShip23<<" кораблей 3-го типа."<<endl;
    cin>>n;
}
Terminal.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "Ship.h"
 
class Terminal
{
    int timePerType[3];
    int costPerType[3];
    int timeTotal;
    int costTotal;
public:
Terminal()
{
    costTotal = 0;
    timeTotal = 0;
}
void addShip(Ship& ship);
    int getCost();
    int getTime();
    void setTypeParameters (int type, int time, int cost);
};
Ship.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
#ifndef __SHIP_H
#define __SHIP_H
class Ship
{
    int type;
    int luggage;
 
public:
    Ship(int t)
    {
        type = t;
    }
    Ship (int l)
    {
        luggage = l;
    }
    int getType();
    int getLuggage();
 
    bool operator >(const Ship& ship) const
    {
        if (*this > ship)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
};
#endif
Terminal.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
#include "Terminal.h"
#include "Ship.h"
 
void Terminal::addShip(Ship& ship)
    {
        int j = ship.getType()-1;
        int l = ship.getLuggage();
        timeTotal+=timePerType[j];
        costTotal+=costPerType[j];
    }
int Terminal::getCost()
    {
        return costTotal;
    }
int Terminal::getTime()
    {
        return timeTotal;
    }
void Terminal::setTypeParameters(int type, int time, int cost)
{
    costPerType[type-1] = cost;
    timePerType[type-1] = time;
}
Ship.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include "Ship.h"
 
int Ship::getType()
{
    return type;
}
 
int Ship::getLuggage()
{
    return luggage;
}
Собственно то, что нужно добвить - это luggage. Я что-то пытался сделать, но не понимаю как реализовать, чтобы пользовател вводил тип и потом груз...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 22:18     Как добавить еще одну характеристику для класса
Посмотрите здесь:

C++ при перезагрузке оператора для класса не получается использовать имя переменной такое же,как в описании класса
Как добавить одну String ко второй? C++
C++ Выдает одну одну ошибку как испрвить
Как добавить в вектор приватный объект класса C++
C++ Как для шаблонного класса определить действие для частного случая
C++ Как можно еще создать массив объектов класса
Std::set, как добавить собственную проверку уникальности для класса? C++
Нужно в пункт просмотра добавить еще одну "ветку" которая будет отвечать за сортировку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru