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

Описать структуру с именем TRAIN - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
18.02.2014, 17:03     Описать структуру с именем TRAIN #1
1. Определить класс с именем TRAIN, содержащий следующие поля:
О название пункта назначения;
О номер поезда;
О время отправления.
Определить методы доступа к этим полям и перегруженные операции извлечения
и вставки для объектов типа TRAIN.
2. Написать программу, выполняющую следующие действия:
О ввод с клавиатуры данных в массив, состоящий из шести объектов типа
TRAIN; записи должны быть упорядочены по времени отправления
поезда;
О вывод на экран информации о поездах, направляющихся в пункт, название
которого введено с клавиатуры;
О если таких поездов нет, выдать на дисплей соответствующее сообщение.


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
109
110
111
112
113
114
115
116
# include <iostream>
# include <stdlib.h>
# include <string.h>
# include <time.h>
#include<windows.h>
 
using namespace std;
 
struct TRAIN
{
    char item[15];
    int number;
    char time[6];
};
 
void zap(TRAIN *tr,int count)
{
    
    
    cout<<"------ Информация для "<<count++<<" поезда ----------------------"<<endl;
    cout<<"Введите пункт назначения : ";
    cin>>tr->item;
    //cin.getline(tr->item,15);  Почему так не получается прочитать информацию??
    cout<<"Введите номер поезда : ";
        cin>>tr->number;
    cout<<"Введите время прибытия  ( ЧЧ : ММ )  : ";
        cin>>tr->time;
    cout<<"----------------------------"<<endl;
    
}
 
void sort(TRAIN *tr, int &n)
           {
 TRAIN p;
 
  cout<<"Сортирока по номерам поездов произведена"<<endl;  
  
 //for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
       if (tr[j].number>tr[j+1].number) 
    {
           p=*(tr+j);
           *(tr+j)=*(tr+j+1);
           *(tr+j+1)=p;
    }
 
   }
}
 
 
void main()
{
    TRAIN inf[2];
    int count;
    int n=2;
    int i;
    int nom;
    bool flag=false;
    char otv[3] ;
    char otv1[3];
    char zn[3]="да";
 
    setlocale(LC_ALL,"rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    count=0;
 
    while(count<n)
        zap(&inf[count++],count);
 
    cout<<"Введите номер поезда для которого вы хотите получить информацию : ";
        cin>>nom;
for (i=0;i<2;i++)
 
        if (inf[i].number==nom)
        {
            flag=true;
            cout<<"----------------------------"<<endl;
            cout<<"Пункт назнаения : "<<inf[i].item<<endl;
            cout<<"Номер поезда : "<<inf[i].number<<endl;
            cout<<"Время прибытия : "<<inf[i].time<<endl;
            cout<<"----------------------------"<<endl;
        }
        if (flag==false)
        cout<<"Информации по вашему запросу не найдено!"<<endl;
cout<<"Хотите ли произвести сортировку базы по номеру поезда\nда/нет"<<endl;
cin>>otv;
if (*otv==*zn)
{
    sort(inf,n);
    for (i=0;i<2;i++)
     {
        cout<<"----------------------------"<<endl;
        cout<<"Пункт назнаения : "<<inf[i].item<<endl;
        cout<<"Номер поезда : "<<inf[i].number<<endl;
        cout<<"Время прибытия : "<<inf[i].time<<endl;
        cout<<"----------------------------"<<endl;
    }
}
else 
cout<<"Вывести на информацию о поездах?"<<endl;
cin>>otv1;
 
 
if (*otv1==*zn)
    for (i=0;i<2;i++)
     {
        cout<<"----------------------------"<<endl;
        cout<<"Пункт назнаения : "<<inf[i].item<<endl;
        cout<<"Номер поезда : "<<inf[i].number<<endl;
        cout<<"Время прибытия : "<<inf[i].time<<endl;
        cout<<"----------------------------"<<endl;
    }
 
}
не отображает русский язык почему то при запуске. Запускал в MS Visual C++ 2010 Express Edition. Подскажите, что нужно сделать чтобы русский отображался?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 17:03     Описать структуру с именем TRAIN
Посмотрите здесь:

Описать структуру с именем TRAIN C++
Описать структуру с именем TRAIN C++
Описать структуру с именем TRAIN C++
C++ Описать структуру с именем TRAIN
C++ Описать структуру с именем TRAIN
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
18.02.2014, 17:23     Описать структуру с именем TRAIN #2
Вы меняли шрифт в настройках консоли на Lucida Console?
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
18.02.2014, 17:24  [ТС]     Описать структуру с именем TRAIN #3
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Вы меняли шрифт в настройках консоли на Lucida Console?
нет, ничего не менял..
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
18.02.2014, 17:29     Описать структуру с именем TRAIN #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
alucard115, ПКМ на шапку консольного окна -> Свойства -> Шрифт. и ставите Lucida Console
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
18.02.2014, 17:33  [ТС]     Описать структуру с именем TRAIN #5
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
alucard115, ПКМ на шапку консольного окна -> Свойства -> Шрифт. и ставите Lucida Console
спасибо большое! теперь все правильно отображает)

А как сделать, чтобы вариантов поезда было не 2, а 6?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
18.02.2014, 17:39     Описать структуру с именем TRAIN #6
Цитата Сообщение от alucard115 Посмотреть сообщение
TRAIN inf[2];
Цитата Сообщение от alucard115 Посмотреть сообщение
for (i=0;i<2;i++)
и в остальных цикла меняйте 2 на 6..
лучше это сделать через константу, что бы в будущем просто поменять её значение, а не перелопатить всю программу
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
18.02.2014, 17:45  [ТС]     Описать структуру с именем TRAIN #7
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
и в остальных цикла меняйте 2 на 6..
лучше это сделать через константу, что бы в будущем просто поменять её значение, а не перелопатить всю программу
спасибо) все работает. только в конце почему то ошибку выдает, не могу понять почему (
"Run-Time Check Failure #2 - Stack around the variable 'otv' was corrupted."
что это означает?
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
18.02.2014, 17:56     Описать структуру с именем TRAIN #8
Цитата Сообщение от alucard115 Посмотреть сообщение
"Run-Time Check Failure #2 - Stack around the variable 'otv' was corrupted."
что это означает?
Слово "нет" введенное с консоли не лезет в это:
C++
1
2
char otv[3] ;
char otv1[3];
Не хватает места под завершающий ноль. Формально исправить можно так:
C++
1
2
char otv[4] ;
char otv1[4];
К сожалению это все равно не защитит от ошибок при вводе более длинных слов. Но для лабы сойдет, наверное.
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
18.02.2014, 18:00  [ТС]     Описать структуру с именем TRAIN #9
Цитата Сообщение от DrOffset Посмотреть сообщение
Слово "нет" введенное с консоли не лезет в это:
C++
1
2
char otv[3] ;
char otv1[3];
Не хватает места под завершающий ноль. Формально исправить можно так:
C++
1
2
char otv[4] ;
char otv1[4];
К сожалению это все равно не защитит от ошибок при вводе более длинных слов. Но для лабы сойдет, наверное.
не помогло( но все равно спасибо, главное программа работает)
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
18.02.2014, 18:32     Описать структуру с именем TRAIN #10
Цитата Сообщение от alucard115 Посмотреть сообщение
не помогло(
Тогда получившийся результат в студию
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.02.2014, 16:40  [ТС]     Описать структуру с именем TRAIN #11
Цитата Сообщение от DrOffset Посмотреть сообщение
Тогда получившийся результат в студию
тоже самое выдает)
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
19.02.2014, 16:42     Описать структуру с именем TRAIN #12
Цитата Сообщение от alucard115 Посмотреть сообщение
тоже самое выдает)
А? Я говорю код окончательного варианта в студию. А уж что он выдает мы и сами посмотрим
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.02.2014, 17:04  [ТС]     Описать структуру с именем TRAIN #13
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
109
110
111
112
113
114
115
116
# include <iostream>
# include <stdlib.h>
# include <string.h>
# include <time.h>
#include<windows.h>
 
using namespace std;
 
struct TRAIN
{
    char item[15];
    int number;
    char time[6];
};
 
void zap(TRAIN *tr,int count)
{
    
    
    cout<<"------ Информация для "<<count++<<" поезда ----------------------"<<endl;
    cout<<"Введите пункт назначения : ";
    cin>>tr->item;
    //cin.getline(tr->item,15);  Почему так не получается прочитать информацию??
    cout<<"Введите номер поезда : ";
        cin>>tr->number;
    cout<<"Введите время прибытия  ( ЧЧ : ММ )  : ";
        cin>>tr->time;
    cout<<"----------------------------"<<endl;
    
}
 
void sort(TRAIN *tr, int &n)
           {
 TRAIN p;
 
  cout<<"Сортирока по номерам поездов произведена"<<endl;  
  
 //for(int i=0; i<n; i++)
  for(int j=0; j<(n-1); j++)
   {
       if (tr[j].number>tr[j+1].number) 
    {
           p=*(tr+j);
           *(tr+j)=*(tr+j+1);
           *(tr+j+1)=p;
    }
 
   }
}
 
 
void main()
{
    TRAIN inf[6];
    int count;
    int n=6;
    int i;
    int nom;
    bool flag=false;
    char otv[4] ;
    char otv1[4];
    char zn[3]="да";
 
    setlocale(LC_ALL,"rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    count=0;
 
    while(count<n)
        zap(&inf[count++],count);
 
    cout<<"Введите номер поезда для которого вы хотите получить информацию : ";
        cin>>nom;
for (i=0;i<6;i++)
 
        if (inf[i].number==nom)
        {
            flag=true;
            cout<<"----------------------------"<<endl;
            cout<<"Пункт назнаения : "<<inf[i].item<<endl;
            cout<<"Номер поезда : "<<inf[i].number<<endl;
            cout<<"Время прибытия : "<<inf[i].time<<endl;
            cout<<"----------------------------"<<endl;
        }
        if (flag==false)
        cout<<"Информации по вашему запросу не найдено!"<<endl;
cout<<"Хотите ли произвести сортировку базы по номеру поезда\nда/нет"<<endl;
cin>>otv;
if (*otv==*zn)
{
    sort(inf,n);
    for (i=0;i<6;i++)
     {
        cout<<"----------------------------"<<endl;
        cout<<"Пункт назнаения : "<<inf[i].item<<endl;
        cout<<"Номер поезда : "<<inf[i].number<<endl;
        cout<<"Время прибытия : "<<inf[i].time<<endl;
        cout<<"----------------------------"<<endl;
    }
}
else 
cout<<"Вывести на информацию о поездах?"<<endl;
cin>>otv1;
 
 
if (*otv1==*zn)
    for (i=0;i<6;i++)
     {
        cout<<"----------------------------"<<endl;
        cout<<"Пункт назначения : "<<inf[i].item<<endl;
        cout<<"Номер поезда : "<<inf[i].number<<endl;
        cout<<"Время прибытия : "<<inf[i].time<<endl;
        cout<<"----------------------------"<<endl;
    }
 system("PAUSE");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 17:28     Описать структуру с именем TRAIN
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
19.02.2014, 17:28     Описать структуру с именем TRAIN #14
В целом все у тебя нормально и падать в штатном режиме не должно. Единственное что, нужно контролировать ввод с консоли значений. Чтобы они были не больше отведенных под них массивов (с учетом завершающего нуля разумеется). Уж делать это программно или оставить так и просто не вводить длинных строк - решай сам.

В штатном режиме (если вводить короткие строки в пределах размерностей) у меня лично ни разу не крэшнулась.
Yandex
Объявления
19.02.2014, 17:28     Описать структуру с именем TRAIN
Ответ Создать тему
Опции темы

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