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

Разработать структуру с именем TRAIN - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Marshal_Женя
 Аватар для Marshal_Женя
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 14
11.09.2011, 15:58     Разработать структуру с именем TRAIN #1
Разработать класс для описанных ниже объектов. Включить в класс методы set (…), get(…), print (…). Определить свои методы для класса. Инициализацию производить в конструкторах и списках инициализации.

1. Train (поезд): Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных.
Создать массив объектов. Вывести:
a) список поездов, следующих до заданного пункта назначения;
b) список поездов, следующих до заданного пункта назначения и отправляющихся после заданного часа;
c) список поездов, отправляющихся до заданного пункта назначения и имеющих общие места.


И так особо в программировании не сильна, а тут такое задали!(
Все что смогла сама написла, больше не могу ниче понять, запуталась...
Помогите плз исправить!

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
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
 
 
class Train //1 поезд
{
    char punkt [20]; //пункт назначения
    int num_train; //номер поезда
    double time; //время отправления
    char seats[10]; //тип места
public:
    
    void setPunkt ( char *_punkt)
    {
        strcpy(punkt, _punkt);
    }
    void setTime (double  _time)
    {
        if(time<24)
        time = _time;
        else
            cout<<"Время введено не правильно!"<<endl;
 
    }
    void setNum_train (int _num_train)
    {
        num_train = _num_train;
    }
    void setSeats ( char *_seats)
    {
        strcpy(seats, _seats);
    }
    void printInfo ()
    {
        cout<<"Пункт назначения: "<<punkt<<endl<<
            "№ поезда: "<<num_train<<endl<<
            "Время отправки: "<<time<<endl<<
            "Тип места: "<<seats<<endl;
    }
};
 
class Arr
{
    Train train[5]; //массив поездов
public:
    Arr ( Train *_train, int _size)
    {
        for (int i=0; i<_size; i++)
        {
            addTrain(_train[i]);
        }
    }
 
    void addTrain(Train _train)
    {
        int size=0;
        if( size<5)
        {
            train[size]= _train;
            size++;
        }
        else
            cout<<"Error Array of trains is full!"<<endl;
    }
 
    void printInfo()
    {
        for(int i=0; i<5; i++)
        {
            cout<<i+1<<". ";
            train[i].printInfo();
            
        }
    }
};
 
void main()
{
    SetConsoleOutputCP(1251);
 
    Train train;
    train.setPunkt('kiev');
 
    train.setNum_train(3);
    train.printInfo();
 
 
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2011, 15:58     Разработать структуру с именем TRAIN
Посмотрите здесь:

Описать структуру с именем TRAIN C++
C++ Описать структуру с именем TRAIN
Описать структуру с именем TRAIN C++
C++ Описать структуру с именем TRAIN
Разработать структуру с именем TRAIN C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
11.09.2011, 22:06     Разработать структуру с именем TRAIN #2
1) Время лучше хранить в long или в специальной структуре.
2) В классе Arr использовать не статический массив, а коллекцию из STL, или динамический массив (если STL не узучали).
(и дать классу нормальное название, депо, например)
3) Создать класс, который будет создавать поезда (например, из заранее подготовленного списка случайным образом выбирать маршрут).

Добавлено через 1 минуту
Цитата Сообщение от Marshal_Женя Посмотреть сообщение
void setPunkt ( char *_punkt)
{
strcpy(punkt, _punkt);
}
И посмотрите, что будет, если передать строку длиннее, чем 20 символов.

Добавлено через 1 минуту
Цитата Сообщение от Marshal_Женя Посмотреть сообщение
char seats[10]; //тип места
для этих челей есть enum.
Marshal_Женя
 Аватар для Marshal_Женя
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 14
11.09.2011, 22:35  [ТС]     Разработать структуру с именем TRAIN #3
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
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
class Train
{
    char punkt[20];// пункт назначения
    int num;//номер поезда
    double time;//время отправки
    int kupe; //купе
    int plac; //плацкарт
public:
    Train (char *_punkt = "Unknown", int _num=0, double _time =00.00, int _kupe=0, int _plac=0)
    {
        setPunkt( _punkt);
        setNum( _num);
        setTime ( _time);
        setKupe ( _kupe);
        setPlac ( _plac);
    }
    void setPunkt(char *_punkt)
    {
        strcpy(punkt, _punkt);
    }
    void setNum(int _num)
    {
        num=_num;
    }
    void setTime (double _time)
    {
        time=_time;
    }
    void setKupe (int _kupe)
    {
        kupe=_kupe;
    }
    void setPlac (int _plac)
 
    {
        plac=_plac;
    }
    void printInfo()
    {
        cout<<
            "Пункт назачения: "<<punkt<<endl<<
            "№ поезда: "<<num<<endl<<
            "Время отправки: "<<time<<endl<<
            "Общее число мест купэ: "<<kupe<<endl<<
            "Общее число мест плацкарт: "<<plac<<endl;
 
    }
};
 
class mas
{
    Train train [5]; //массив поездов
    int size; // кол-во поездов
public:
    
    void addTrain (Train _train)
    {
        if(size<5)
        {
            train[size]=_train;
            size++;
        }
        else
            cout<<"Error, array is full"<<endl;
    }
    void printInfo()
    {
        for(int i=0; i<size; i++)
        {
            cout<<i+1<<". ";
            train[i].printInfo();
        }
    }
};
 
void main()
{
    SetConsoleOutputCP(1251);
 
    const int len=5;
    Train train[len]={
        Train("Kiev", 4, 22.44, 54, 23),
        Train("Zaporizhia", 7, 11.01, 40, 50),
        Train("Moskva", 16, 00.37, 70, 94),
        Train("St-Peterburg", 3, 07.56, 57, 49),
        Train("Doneck", 41, 14.08, 34, 28)
    };
 
    mas mas;
    mas.printInfo();
}
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
11.09.2011, 22:48     Разработать структуру с именем TRAIN #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <clocale>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
class Train
{
    char punkt[20];// пункт назначения
    int num;//номер поезда
    double time;//время отправки
    int kupe; //купе
    int plac; //плацкарт
public:
    explicit Train (const char *_punkt = "Unknown", int _num = 0, double _time = 0.0, int _kupe = 0, int _plac = 0)
    {
        setPunkt(_punkt);
        setNum(_num);
        setTime(_time);
        setKupe(_kupe);
        setPlac(_plac);
    }
    void setPunkt(const char *_punkt)
    {
        strcpy(punkt, _punkt);
    }
    void setNum(int _num)
    {
        num=_num;
    }
    void setTime (double _time)
    {
        time=_time;
    }
    void setKupe (int _kupe)
    {
        kupe=_kupe;
    }
    void setPlac (int _plac)
    {
        plac=_plac;
    }
    void printInfo()
    {
        cout << "Пункт назачения: " << punkt << endl
            << "№ поезда: " << num << endl
            << "Время отправки: " << time << endl
            << "Общее число мест купэ: " << kupe << endl
            << "Общее число мест плацкарт: " <<plac << endl;
    }
};
 
class mas
{
    Train train[5]; //массив поездов
    int size; // кол-во поездов
public:
    mas() :
        size()
    {
    }
 
    void addTrain (Train _train)
    {
        if (size < 5)
            train[size++]=_train;
        else
            cout << "Error, array is full" << endl;
    }
    void printInfo()
    {
        for(int i = 0; i < size; i++)
        {
            cout<<i+1<<". ";
            train[i].printInfo();
        }
    }
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    const int len=5;
    Train train[len] = {
        Train("Kiev", 4, 22.44, 54, 23),
        Train("Zaporizhia", 7, 11.01, 40, 50),
        Train("Moskva", 16, 00.37, 70, 94),
        Train("St-Peterburg", 3, 07.56, 57, 49),
        Train("Doneck", 41, 14.08, 34, 28)
    };
 
    // создали просто пустой массив оболочку и все - он пустой;
    mas ms;
 
    // здесь надо было инициализировать массив-wrapper mas;
    for (int i = 0; i < len; ++i)
        ms.addTrain(train[i]);
 
    ms.printInfo();
 
    _getch();
    return 0;
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
12.09.2011, 00:16     Разработать структуру с именем TRAIN #5
вопрос:

а нужен ли здесь explicit?
C++
1
 explicit Train (const char *_punkt = "Unknown", int _num = 0, double _time = 0.0, int _kupe = 0, int _plac = 0)
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.09.2011, 01:04     Разработать структуру с именем TRAIN #6
нужен
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
12.09.2011, 07:00     Разработать структуру с именем TRAIN #7
знаю, что конструкторы, в которых все аргументы, кроме первого имеют значения по умолчанию нужно(желательно) объявлять с explicit, а вот с конструктором по умолчанию...
Marshal_Женя
 Аватар для Marshal_Женя
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 14
12.09.2011, 12:59  [ТС]     Разработать структуру с именем TRAIN #8
мы этого еще не учили)
так что мне простят)
но все равно спасибо, буду знать!)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2011, 13:01     Разработать структуру с именем TRAIN
Еще ссылки по теме:

C++ Описать структуру с именем TRAIN
Разработать структуру с именем TRAIN C++
Описать структуру с именем TRAIN C++

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

Или воспользуйтесь поиском по форуму:
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
12.09.2011, 13:01     Разработать структуру с именем TRAIN #9
конструктор с аргументами по умолчанию это по сути множество конструкторов в одном, в том числе он содержит и конструктор с одним аргументом.
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
#include <iostream>
#include <cstdlib>
 
class test_class
{
public:
   explicit test_class(const char* = "undefined_name", int value = 5) :
      value(value)
   {
   }
   
   friend std::ostream& operator<< (std::ostream& stream, const test_class& instance)
   {
      return stream << instance.value;
   }
   
private:
   int value;
};
 
int main()
{
   test_class instance;
   std::cout << instance << std::endl;
   instance = "file_name"; 
   return EXIT_SUCCESS;
}
так не компилится
Код
source.cpp: In function 'int main()':
source.cpp:25:15: error: no match for 'operator=' in 'instance = "file_name"'
source.cpp:25:15: note: candidates are:
source.cpp:4:7: note: test_class& test_class::operator=(const test_class&)
source.cpp:4:7: note:   no known conversion for argument 1 from 'const char [10]' to 'const test_class&'
source.cpp:4:7: note: test_class& test_class::operator=(test_class&&)
source.cpp:4:7: note:   no known conversion for argument 1 from 'const char [10]' to 'test_class&&'
если убрать explicit, то все нормально.
Yandex
Объявления
12.09.2011, 13:01     Разработать структуру с именем TRAIN
Ответ Создать тему
Опции темы

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