Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
RamzezUA
1 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 56
Завершенные тесты: 1
#1

Структура Train с меню - C++

04.01.2015, 18:46. Просмотров 287. Ответов 4
Метки нет (Все метки)

Описать структуру с именем TRAIN, содержащую следующие поля:
- название пункта назначения
- номер поезда
- время отправления

Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправления поезда;
- вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры
- если таких поездов нет, выдать на дисплей соответствующее сообщение
Организовать меню с пунктами: 1 - введения данных, 2) исправление 3) уничтожение данных 4) просмотр всей информации 5) уничтожение информации.

Ругается на "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
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
// POE3DA.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream"
#include <stdio.h>
#include "conio.h"
#include <stdlib.h>
#include <string.h>
#pragma warning (disable:4996)
using namespace std;
struct TRAIN
{
    char punkt[15];
    int nomp;
    char time[10];
    int hours[5];
    int minutes[5];
}Nomer[6];
 
 
 
int Menu();
void Enter(int N);
void Edit();
void List(int N);
void Delete();
void DeleteAll(int N);
void Info(int N);
 
void main()
{
 
    cout << "Vvedite kol-vo marshrutov\n";
    int N;
    cin >> N;
 
    int c ;
    for (int i = 0; i<N; i++)
    {
         
        Nomer[i].punkt[0] = '\0';
        Nomer[i].time[0] = '\0';
    }
 
    while (c != EOF)
    {
        
            
        c = Menu();
        switch (c)
        {
        case 1:  Enter(N);     break;
        case 2:  Edit();       break;
        case 3:  Delete();     break;
        case 4:  List(N);      break;
        case 5:  DeleteAll(N); break;
        case 6:  Info(N);      break;
        case 0:  exit(0);
        }
    }
    getche();
}
 
/*vvod dannuh*/
void Enter(int N)
{
    for (int i = 0; i<N; i++)
    {
        cout << "\n\t#" << i + 1;
        cout << "\nPunkt naznachenia - ";
        gets(Nomer[i].punkt);
        cout << "Nomer poezda - ";
        cin >> Nomer[i].nomp;
        cout << "Vremya otpravlenia - ";
        cin >> Nomer[i].time;
 
 
        /*schitivaem chasy*/
        for (int j = 0; Nomer[i].time[j] != ':'; j++)
        {
            int t = 0;
            char str[2];
            str[t++] = Nomer[i].time[j];
            Nomer[i].hours[i] = atoi(str);
        }
 
        /*schitivaem minuty*/
        for (int j = '\0'; Nomer[i].time[j] != ':'; j--)
        {
            int t = 0;
            char str[2];
            str[t++] = Nomer[i].time[j];
            Nomer[i].minutes[i] = atoi(str);
 
        }
    }
    _getche();
 
}
 
/*Menu*/
int Menu()
{
    char a[10];
    int c;
    cout << "ЪДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДї" << endl;
    cout << "і  Press:  і  To:                і" << endl;
    cout << "ГДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДґ" << endl;
    cout << "і    1     і  Enter              і" << endl;
    cout << "і    2     і  Edit               і" << endl;
    cout << "і    3     і  Delete             і" << endl;
    cout << "і    4     і  List               і" << endl;
    cout << "і    5     і  Delete all         і" << endl;
    cout << "і    6     і  Info               і" << endl;
    cout << "і    0     і  Exit               і" << endl;
    cout << "АДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДЩ" << endl;
    do{
        gets(a);
        c = atoi(a);
    } while (c>6 || c<0);
    _getche();
    return c;
}
 
/*Gotovyi Spisok*/
void List(int N)
{
    /*sortirovka po vremeni*/
    printf("\n#\tPoezd#\tPunkt\tVremya otpr.\n\n");
    struct TRAIN temp;
    for (int i = 0; i<N; i++)
    {
        if (Nomer[i + 1].hours[i + 1] < Nomer[i].hours[i])
        {
            temp = Nomer[i];
            Nomer[i] = Nomer[i + 1];
            Nomer[i + 1] = temp;
        }
        else if (Nomer[i + 1].hours[i + 1] == Nomer[i].hours[i])
        {
            if (Nomer[i + 1].minutes[i + 1] < Nomer[i].minutes[i])
            {
                temp = Nomer[i];
                Nomer[i] = Nomer[i + 1];
                Nomer[i + 1] = temp;
            }
        }
    }
    for (int i = 0; i<N; i++)
    {
 
        printf("%d\t", i);
        printf("%d\t", Nomer[i].nomp);
        printf("%s\t", Nomer[i].punkt);
        printf("%s\n", Nomer[i].time);
    }
    _getche();
}
 
/*Udalenie odnogo marshruta*/
void Delete()
{
    int del;
    cout << "\nNomer kotoriy xotite udalit..";
    cin >> del;
    Nomer[del].punkt[0] = '\0';
    Nomer[del].nomp = '\0';
    Nomer[del].time[0] = '\0';
    _getche();
}
 
/*udalenie vsego*/
void DeleteAll(int N)
{
    for (int i = 0; i<N; i++)
    {
        Nomer[i].punkt[0] = '\0';
        Nomer[i].nomp = '\0';
        Nomer[i].time[0] = '\0';
    }
    _getche();
    cout << "Udaleno!\n";
}
 
/*Redaktirovanie*/
void Edit()
{
    int ed;
    cout << "\nNomer kotoriy xotite dobavit...\n\n";
    cin >> ed;
    cout << "\nPunkt naznachenia - ";
    gets(Nomer[ed].punkt);
    cout << "\nNomer poezda - ";
    cin >> Nomer[ed].nomp;
    cout << "\nVremya otpravlenia - ";
    cin >> Nomer[ed].time[ed];
    _getche();
}
 
/*Poisk marshruta*/
void Info(int N)
{
    int b = 0;
    char a[15] = " ";
    printf("\n Vvedite punkt naznachenia \n");
    gets(a);
    for (int i = 0; i<N; i++)
    {
        if (strcmp(a, Nomer[i].punkt) == 0)
        {
            printf("\n#\tPoezd#\tPunkt\tVremya otpr.\n\n");
            printf("%d\t", i);
            printf("%d\t", Nomer[i].nomp);
            printf("%s\t", Nomer[i].punkt);
            printf("%s\n", Nomer[i].time);
            b = 1;
        }
    }
    if (b != 1)
        printf("Takix marshrytov net !\n");
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2015, 18:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Структура Train с меню (C++):

Структура TRAIN - C++
Структуры Вариант 8 1. Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; ...

Структура Train. Считывание из файла - C++
Всем привет. У меня такая задача. Описать структуру с именем TRAIN, содержащую следующие поля:-название пункта назначения;-номер...

Структура TRAIN Исправьте ошибки - C++
Структура TRAIN с полями: - название пункта назначения; - номер поезда; ...

Структура Train. Работа с файлами - C++
&quot;Расписание поездов Москва-С. Петербург&quot; Сформировать файлы: 1.Список поездов, отправляющихся из Москвы после часа введенного с...

Структура TRAIN(считывание из файла) - C++
Знаю что много тем на эту структуру TRAIN, но я не нашел именно эту программу.(помогите доработать эту программу) Нужно: В файле...

Структура Train, вывод информации о поездах - C++
Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Написать...

4
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
04.01.2015, 18:54 #2
RamzezUA
Run-Time Check Failure #3 - The variable 'c' is being used without being initialized.
Вы используете переменную c, которая неинициализирована.
Вместо
int c;
достаточно прописать
int c = 0;
0
RamzezUA
1 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 56
Завершенные тесты: 1
04.01.2015, 18:56  [ТС] #3
Vlad1slav
Я такое проделывал уже, оно то показывает меню, но почему-то оно не хочет дальше использоваться. Когда я нажимаю 1 (или другой любой пункт меню), оно закрывает окно.
0
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
04.01.2015, 20:59 #4
RamzezUA, не "не хочет использоваться", а делает то что написали.
Не понимаю смысла следующего кода:
C++
1
2
3
4
5
6
    do{
        gets(a);
        c = atoi(a);
    } while (c>6 || c<0);
    _getche();
    return c;
Если нужно считать символ от 0 до 6, можно так:
C++
1
2
3
4
    do{
        c = _getche() - '0';
    } while (c>6 || c<0);
    return c;
Добавлено через 5 минут
Если какой-то участок кода выполняется не так как было запланировано, можно поставить Breakpoint (в Visual Studio - F9), запустить в режиме Debug (в VS по умоланию F5). Когда програма остановиться-открыть окно Watch и посмотреть значение соответствующих переменных. Более детально Отладка Visual studio
0
RamzezUA
1 / 1 / 0
Регистрация: 18.09.2014
Сообщений: 56
Завершенные тесты: 1
04.01.2015, 22:48  [ТС] #5
Спасибо, программа заработала, еще кое-какие бока добавил, но есть еще одна загвоздка. Когда я ввел данные, и мне надо вывести (через info, там надо ввести пункт назначения), когда я нажимаю info, то оно автоматически выдает что таких поездов нет.

Добавлено через 15 минут
Доделал, вроде все нормально. Кому надо, добавлю последнее измененное. Но не могу понять почему не работает "edit", не хочет запоминать введенное. После ввода, когда проверяешь в list, то показывает изначально введенное.
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
void Info(int N)
{
 
    char a[15] = " ";
    printf("\n Vvedite punkt naznachenia \n");
    std::cin >> a;
    bool f = false;
    for (int i = 0; i<N; i++)
 
    if (strcmp(Nomer[i].punkt,a ) == 0)
        {
            printf("\n#\tPoezd#\tPunkt\tVremya otpr.\n\n");
            printf("%d\t", i);
            printf("%d\t", Nomer[i].nomp);
            printf("%s\t", Nomer[i].punkt);
            printf("%s\n", Nomer[i].time);
            f = true;
        }
        if (!f )
            std::cout<<("Takix marshrytov net !\n");
        _getche();
    
    getch();
}
Добавлено через 31 минуту
P.S. ошибку понял почему не добавляло (из за максимального кол-ва элементов введеных ранее), вопрос отпал
0
04.01.2015, 22:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2015, 22:48
Привет! Вот еще темы с ответами:

Структура Train, определить для каждого поезда процент заполнения вагонов - C++
Ребята, помогите, пожалуйста, определить для каждого поезда процент заполнения вагонов и посчитать средний процент заполнения вагонов для...

Реализовать поиск и сортировку по заданному полю в массиве объектов пользовательского типа (структура Train) - C++
Описать структуру с именем TRAIN, содержащую следующие поля: NAZV - название пункта назначения, NUMR - номер поезда, DATE - дата отправки,...

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость. - C++
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто сколько сможет сделать задач, тем всей группой поставим &quot;+&quot;...

Структура «База», сущности «Универсам» и «Продукты», структура «Товар» - C++
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и «Продукты» описанной структуры. 3. Создать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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