Аватар для ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127

Вывод структуры, строка как элемент структуры

19.10.2014, 20:41. Показов 2822. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача
Описать структуру с именем TRAIN, содержащую следующие поля:
□ название пункта назначения;
□ номер поезда;
□ время отправления.
Написать программу, выполняющую следующие действия:
□ ввод с клавиатуры данных в массив, состоящий из шести элементов типа 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
#include <stdio.h>
struct Train{
    char FinalPoint[];
    int Num, TimeH, TimeM;
};
void Scanf(Train* Obj, int n){
    int count=n;
    for (int i=0; i<n; i++){
        printf("New obj. Left %d\n Write final point\n",count);
        scanf("%s",&Obj[i].FinalPoint);
        printf("Write number\n");
        scanf("%d",&Obj[i].Num);
        printf("Write time\n");
        scanf("%d:%d",&Obj[i].TimeH, &Obj[i].TimeM);
        count--;
    }
}
void Bubble(Train* Obj, int n){
    for(int i=n-1; i>=0; i--)
        for(int j=0; j<i; j++)
            if( (Obj[j].TimeH>Obj[j+1].TimeH) || ((Obj[j].TimeH==Obj[j+1].TimeH)&&(Obj[j].TimeM>Obj[j+1].TimeM)) ){
                Train Trash=Obj[j];
                Obj[j]=Obj[j+1];
                Obj[j+1]=Trash;
            }
}
void PrintPoint(Train* Obj, int n){
    char point[10];
    bool flag=0;
    scanf("%s",&point);
    for(int i=0; i<n;i++)
        if (point==(Obj[i].FinalPoint)){
            printf("Number Train %d\n",Obj[i].Num);
            printf("Final Point Train %s\n",Obj[i].FinalPoint);
            printf("Time %d:%d\n",Obj[i].TimeH, Obj[i].TimeM);
            flag=1;
        }
    if (flag==0)
        printf("No train"); 
}
int main(){
    const int n=5;
    Train* Obj=new Train[n];
    Scanf(Obj, n);
    Bubble(Obj, n);
    PrintPoint(Obj, n);
}

Не выводит объекты после запроса. Пробовал вывести просто элемент и получилось, будто не обнуленные переменные со всяким мусором.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2014, 20:41
Ответы с готовыми решениями:

Помещение структуры в вектор, удаление структуры, изменение элементов структуры
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Функция внутри структуры использует указатель, как поле этой структуры
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры)
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

12
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 21:09
C++
1
char FinalPoint[];
Размер строки нужно задать.
Добавлено через 3 минуты
Этот ввод как понимать?
C++
1
scanf("%d:%d",&Obj[i].TimeH, &Obj[i].TimeM);
Добавлено через 2 минуты
C++
1
if (point==(Obj[i].FinalPoint))
Си-строки так не сравниваются, нужно использовать strcmp().
1
 Аватар для ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
19.10.2014, 21:24  [ТС]
Я рассчитывал так запоминать время. Отдельная переменная для часов, другая для минут.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 21:29
Цитата Сообщение от ReinDeer Посмотреть сообщение
Я рассчитывал так запоминать время. Отдельная переменная для часов, другая для минут.
А двоеточие куда деть?
0
 Аватар для ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
19.10.2014, 21:48  [ТС]
А разве оно не пропадает? Типо вводится так, чтобы между ними было двоеточие.

Добавлено через 17 минут
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
#include <stdio.h>
struct Train{
    char FinalPoint[];
    int Num, TimeH, TimeM;
};
void Scanf(Train* Obj, int n){
    int count=n;
    for (int i=0; i<n; i++){
        printf("New obj. Left %d\n Write final point\n",count);
        scanf("%s",&Obj[i].FinalPoint);
        printf("Write number\n");
        scanf("%d",&Obj[i].Num);
        printf("Write time\n");
        scanf("%d:%d",&Obj[i].TimeH, &Obj[i].TimeM);
        count--;
    }
}
void Bubble(Train* Obj, int n){
    for(int i=n-1; i>=0; i--)
        for(int j=0; j<i; j++)
            if( (Obj[j].TimeH>Obj[j+1].TimeH) || ((Obj[j].TimeH==Obj[j+1].TimeH)&&(Obj[j].TimeM>Obj[j+1].TimeM)) ){
                Train Trash=Obj[j];
                Obj[j]=Obj[j+1];
                Obj[j+1]=Trash;
            }
}
void PrintPoint(Train* Obj, int n){
    char point[10];
    bool flag=0;
    scanf("%s",&point);
    for(int i=0; i<n;i++)
        if (strcmp(point, Obj[i].FinalPoint)){
            printf("Number Train %d\n",Obj[i].Num);
            printf("Final Point Train %s\n",Obj[i].FinalPoint);
            printf("Time %d:%d\n",Obj[i].TimeH, Obj[i].TimeM);
            flag=1;
        }
    if (flag==0)
        printf("No train"); 
}
int main(){
    const int n=5;
    Train* Obj=new Train[n];
    Scanf(Obj, n);
    Bubble(Obj, n);
    PrintPoint(Obj, n);
}
Заработало, вот только вместо 15:00 выводит 15:0. Есть идеи как хранить время?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 21:50
Цитата Сообщение от ReinDeer Посмотреть сообщение
А разве оно не пропадает?
Куда же ему пропасть?
Цитата Сообщение от ReinDeer Посмотреть сообщение
Типо вводится так, чтобы между ними было двоеточие.
Между ними - это в переменной какого типа? В int?
1
 Аватар для ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
19.10.2014, 21:53  [ТС]
Она не сохраняется, я в printf указываю, чтобы она игнорировалась.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 22:02
Цитата Сообщение от ReinDeer Посмотреть сообщение
Она не сохраняется, я в printf указываю, чтобы она игнорировалась.
Да ты знаток! Тогда сам разбирайся.
1
 Аватар для ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
19.10.2014, 22:24  [ТС]
Только-только заработало, сделал некоторые изменения, не работает.
Возвращаюсь к сохраненной версии - опять не работает.
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
#include <stdio.h>
struct Train{
        char FinalPoint[10];
        int Num, TimeH, TimeM;
};
void Scanf(Train* Obj, int n){
        int count=n;
        for (int i=0; i<n; i++){
                printf("New obj. Left %d\n Write final point\n",count);
                scanf("%s",&Obj[i].FinalPoint);
                printf("Write number\n");
                scanf("%d",&Obj[i].Num);
                printf("Write time\n");
                scanf("%d %d",&Obj[i].TimeH, &Obj[i].TimeM);
                count--;
        }
}
void Bubble(Train* Obj, int n){
        for(int i=n-1; i>=0; i--)
                for(int j=0; j<i; j++)
                        if( (Obj[j].TimeH>Obj[j+1].TimeH) || ((Obj[j].TimeH==Obj[j+1].TimeH)&&(Obj[j].TimeM>Obj[j+1].TimeM)) ){
                            Train Trash=Obj[j];
                                Obj[j]=Obj[j+1];
                                Obj[j+1]=Trash;
                        }
}
void PrintPoint(Train* Obj, int n){
        char point[10];
        bool flag=0;
        scanf("%s",&point);
        for(int i=0; i<n;i++)
                if (strcmp(point, Obj[i].FinalPoint)){
                        printf("Number Train %d\n",Obj[i].Num);
                        printf("Final Point Train %s\n",Obj[i].FinalPoint);
                        printf("Time %d:%d\n",Obj[i].TimeH, Obj[i].TimeM);
                        flag=1;
                }
        if (flag==0)
                printf("No train");    
}
int main(){
        const int n=2;
        Train* Obj=new Train[n];
        Scanf(Obj, n);
        Bubble(Obj, n);
        PrintPoint(Obj, n);
}
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 22:31
При равенстве strcmp() ноль возвращает, значит нужно так:
C++
1
if (!strcmp(point, Obj[i].FinalPoint)){
0
 Аватар для ReinDeer
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
19.10.2014, 22:34  [ТС]
До этого изменения работало, теперь в if не заходит.
Работало, мягко говоря, там где надо - выводились рандомные символы, типа смайлика.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 22:35
И это добавь (для strcmp()):
C++
1
#include <string.h>
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2014, 22:38
Исключаем Bubble() (с ней сам разбирайся):
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
#include <stdio.h>
#include <string.h>
struct Train{
        char FinalPoint[10];
        int Num, TimeH, TimeM;
};
void Scanf(Train* Obj, int n){
        int count=n;
        for (int i=0; i<n; i++){
                printf("New obj. Left %d\n Write final point\n",count);
                scanf("%s",&Obj[i].FinalPoint);
                printf("Write number\n");
                scanf("%d",&Obj[i].Num);
                printf("Write time\n");
                scanf("%d %d",&Obj[i].TimeH, &Obj[i].TimeM);
                count--;
        }
}
void Bubble(Train* Obj, int n){
        for(int i=n-1; i>=0; i--)
                for(int j=0; j<i; j++)
                        if( (Obj[j].TimeH>Obj[j+1].TimeH) || ((Obj[j].TimeH==Obj[j+1].TimeH)&&(Obj[j].TimeM>Obj[j+1].TimeM)) ){
                            Train Trash=Obj[j];
                                Obj[j]=Obj[j+1];
                                Obj[j+1]=Trash;
                        }
}
void PrintPoint(Train* Obj, int n){
        char point[10];
        bool flag=0;
        scanf("%s",&point);
        for(int i=0; i<n;i++)
                if (!strcmp(point, Obj[i].FinalPoint)){
                        printf("Number Train %d\n",Obj[i].Num);
                        printf("Final Point Train %s\n",Obj[i].FinalPoint);
                        printf("Time %d:%d\n",Obj[i].TimeH, Obj[i].TimeM);
                        flag=1;
                }
        if (flag==0)
                printf("No train");    
}
int main()
{
        const int n=2;
        Train* Obj=new Train[n];
        Scanf(Obj, n);
        //Bubble(Obj, n);
        PrintPoint(Obj, n);
 
        getchar();
        getchar();
}
Миниатюры
Вывод структуры, строка как элемент структуры  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2014, 22:38
Помогаю со студенческими работами здесь

Вывод через структуры ,как сделать?
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; class drob { public: double ch;

Как добавить элемент структуры с использованием #include <vector> ?
#include &lt;vector&gt; #include &lt;iostream&gt; using namespace std; struct Item { int n; };

Как редактировать поля структуры и как добавить новый элемент в вектор структур?
Отзовитесь, пожалуйста, кто-то. Допустим есть структура struct worker { int exp; const char* name; const...

Как передать элемент структуры, как параметр функции
Помогите, пожалуйста. Есть структура, необходимо создать функцию сортировки, но при этом, чтобы можно было передавать элемент структуры,...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё.
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...


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

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

Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru