Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Nastya15684
0 / 0 / 1
Регистрация: 12.10.2015
Сообщений: 133
1

Обработка данных о театральных событиях

07.11.2015, 17:12. Просмотров 183. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста почему не работает!!? Очень срочно!!

Задание: Данные о театральных событиях содержат название театра, название спектакля, дату и время показа (массив данных), продолжительность спектакля, жанр.
Организовать информационный массив для хранения данных в виде заданной структуры и заполнить его данными с клавиатуры.
1)Вывести данные о спектаклях, показ которых происходит заданного числа и которые при этом начинаются позже заданного времени и заканчиваются раньше заданного времени. Значения параметров задаются
пользователем с клавиатуры.
2)Вывести данные о спектаклях в заданном пользователем театре в заданный день.
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
97
98
99
100
101
102
103
104
105
106
#include <iostream>
using namespace std;
int fun1(int, int, int, int);
int fun2(char*, int, int);
int fun3(char*);
    struct theater
    {
        char theat[20];
        char name[20];
        float time;
        char genre[20];
    };
    struct date
    {
        int m;
        int d;
        float tm;
        float td;
        float tn;
    };
    int const n = 3;
    theater data[n];
    date data1[n];
int main()
{
    setlocale(LC_ALL, "rus");
    for (int i = 0; i < n; i++)
    {
        cout << "Введите название " << i + 1 << " театра:" << endl;
        cin >> data[i].theat;
        cout << "Введите название " << i + 1 << " представления:" << endl;
        cin>> data[i].name;
        for (int j = 0; j < n; j++)
        {
            cout << "Введите месяц " << i + 1 << " представления:" << endl;
            cin >> data1[i].m;
            cout << "Введите день " << i + 1 << " представления:" << endl;
            cin >> data1[i].d;
            cout << "Введите время " << i + 1 << " представления:" << endl;
            cin >> data1[i].tm >> data1[i].td >> data1[i].tn;
        }
        cout << "Введите продолжительность " << i + 1 << " представления:" << endl;
        cin >> data[i].time;
        cout << "Введите жанр " << i + 1 << " представления:" << endl;
        cin>> data[i].genre;
    }
    int m1, d1, t1, t2, m2, d2;
    char* theat1[20];
    char* name1[20];
    cout << "Введите месяц:" << endl;
    cin >> m1;
    cout << "Введите день:" << endl;
    cin >> d1;
    cout << "Введите время:" << endl;
    cin >> t1 >> t2;
    fun1(m1, d1, t1, t2);
    cout << "Введите название театра:" << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> theat1[i];
    }
    cout << "Введите месяц:" << endl;
    cin >> m2;
    cout << "Введите день:" << endl;
    cin >> d2;
    fun2(theat1[20], m2, d2);
    cout << "Введите название представления:" << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> name1[i];
    }
    fun3 (name1[20]); 
    system("pause");
    return 0;
}
int fun1(int m1, int d1, int t1, int t2)
{
    for (int i = 0; i < n; i++)
    {
        if (m1 == data1[i].m && d1 == data1[i].d)
        {
            cout << data[i].theat << endl << data1[i].m << endl << data1[i].d << endl;
            cout << (t1 > data1[i].tm <t2 ? data1[i].tm : (t1 > data1[i].td < t2 ? data1[i].td : data1[i].tn));
            cout << data[i].time << endl << data[i].genre << endl;
        }
    }
    return 0;
}
int fun2(char* theat1,int m2, int d2)
{
    for (int i = 0; i < n; i++)
    {
        if (theat1 == data[i].theat && m2 == data1[i].m && d2 == data1[i].d)
            cout << data[i].theat << endl << data1[i].m << endl << data1[i].d << endl << data1[i].tm << ';'<< data1[i].td <<','<< data1[i].tn << endl << data[i].time << endl << data[i].genre << endl;
    }
    return 0;
}
int fun3(char* name1)
{
    for (int i = 0; i < n; i++)
    {
        if (name1 == data[i].name)
            cout << data1[i].m << endl << data1[i].d << endl << data1[i].tm << ';' << data1[i].td << ',' << data1[i].tn << endl;
    }
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2015, 17:12
Ответы с готовыми решениями:

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

Каким образом организовывать ввод данных для поддержки программной обработка неправильно введенных данных?
Каким образом организовывать ввод данных для поддержки программной обработка...

Обработка данных по математике
Помогите, я новичек в С++ и плохо еще разбираюсь в динамических структурах......

Обработка символьных данных
Пусть во входном потоке находится последовательность литер, заканчивающаяся...

Обработка данных о товарах
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iterator&gt; #include...

7
zss
Модератор
Эксперт С++
7470 / 6843 / 4320
Регистрация: 18.12.2011
Сообщений: 18,102
Завершенные тесты: 1
07.11.2015, 17:20 2
Предупреждение компиляции
test.cpp(83) : warning C4804: <: небезопасное использование типа 'bool' в операции
эта строка
cout << (t1 > data1[i].tm <t2 ? data1[i].tm : (t1 > data1[i].td < t2 ? data1[i].td : data1[i].tn))
что такое t1 > data1[i].tm <t2 ???????????
C++
1
t1 > data1[i].tm && data1[i].tm < t2
0
Melg
539 / 160 / 79
Регистрация: 23.09.2013
Сообщений: 316
07.11.2015, 17:23 3
Nastya15684, Поскольку Вы не уточнили симптомы "не работает" Останусь вольным художником, и попробую пофантазировать на тему того, что вы имели ввиду:
1) Потому-что запись
C++
1
t1 > data1[i].tm < t2
в с++ не равна её математическому эквиваленту,
запись должна выглядеть как
C++
1
 ( data[i].tm > t1 && data[i].tm < t2)
Если имелось ввиду, что data[i].tm должна быть больше t1 но меньше t2
2) Потому-что using namespace std; плохой тон
3) Потому-что глобальные переменные - плохо
4) Потому-что миксовать код получения значений с заполнением массива структур плохо
5) Потому-что называть функции fun 1, fun 2, fun 3 - примерно такое-же кощунство как если бы Вас родители назвали Ребенок №2147483648 планеты земля
6) Потому-что в ООП языке, в ветке форума, который посвящен именно с++ предоставлять код, использующий char [] для представления строк, вместо std::string - не хорошо.
7) Потому-что писать огромные нечитаемые условия в if-ах плохо.
8) Потому-что создавать функции, всегда возвращающие одно и тоже значение, а потом игнорировать возвращаемое значений функций - бессмысленно.
0
Nastya15684
0 / 0 / 1
Регистрация: 12.10.2015
Сообщений: 133
07.11.2015, 17:25  [ТС] 4
zss, вот что это :которые при этом начинаются позже заданного времени и заканчиваются раньше заданного времени.

Но у меня компилятор ее запускает, и в самом начале после того как я ввожу название представления программа заканчивается.
То есть наверно что то не так в этом цикле? И дальше может
C++
1
2
3
4
5
6
7
8
9
for (int j = 0; j < n; j++)
        {
            cout << "Введите месяц " << i + 1 << " представления:" << endl;
            cin >> data1[i].m;
            cout << "Введите день " << i + 1 << " представления:" << endl;
            cin >> data1[i].d;
            cout << "Введите время " << i + 1 << " представления:" << endl;
            cin >> data1[i].tm >> data1[i].td >> data1[i].tn;
        }
0
Melg
07.11.2015, 17:30
  #5

Не по теме:

Nastya15684, На будущее шаблон наиболее эффективного вопроса о коде может выглядеть примерно так:
*Приветствие*
Я написала код: *Код*
Он должен делать: *Задача*
Когда я делаю: *Входные данные в программу*
Я ожидаю получить: *Ожидаемый результат*
Но я получаю: *Полученный результат*
Подскажите: *почему/как изменить*
*Заранее спасибо*

0
zss
Модератор
Эксперт С++
7470 / 6843 / 4320
Регистрация: 18.12.2011
Сообщений: 18,102
Завершенные тесты: 1
07.11.2015, 17:38 6
Цитата Сообщение от zss Посмотреть сообщение
t1 > data1[i].tm <t2
Это совсем не то, что Вы хотите:
1. t1 > data1[i].tm - результат bool (0 или 1)
2. Этот bool сравнивается с t2
Так что, в двух местах в этой строке замените на вышенаписанное мной.
0
Nastya15684
0 / 0 / 1
Регистрация: 12.10.2015
Сообщений: 133
07.11.2015, 17:49  [ТС] 7
Вот исправила:
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
#include <iostream>
using namespace std;
int fun1(int, int, int, int);
int fun2(char*, int, int);
int fun3(char*);
    struct theater
    {
        char theat[20];
        char name[20];
        float time;
        char genre[20];
    };
    struct date
    {
        int m;
        int d;
        float tm;
        float td;
        float tn;
    };
    int const n = 3;
    theater data[n];
    date data1[n];
int main()
{
    setlocale(LC_ALL, "rus");
    for (int i = 0; i < n; i++)
    {
        cout << "Введите название " << i + 1 << " театра:" << endl;
        cin >> data[i].theat;
        cout << "Введите название " << i + 1 << " представления:" << endl;
        cin>> data[i].name;
        for (int j = 0; j < n; j++)
        {
            cout << "Введите месяц " << i + 1 << " представления:" << endl;
            cin >> data1[i].m;
            cout << "Введите день " << i + 1 << " представления:" << endl;
            cin >> data1[i].d;
            cout << "Введите время " << i + 1 << " представления:" << endl;
            cin >> data1[i].tm >> data1[i].td >> data1[i].tn;
        }
        cout << "Введите продолжительность " << i + 1 << " представления:" << endl;
        cin >> data[i].time;
        cout << "Введите жанр " << i + 1 << " представления:" << endl;
        cin>> data[i].genre;
    }
    int m1, d1, t1, t2, m2, d2;
    char* theat1[20];
    char* name1[20];
    cout << "Введите месяц:" << endl;
    cin >> m1;
    cout << "Введите день:" << endl;
    cin >> d1;
    cout << "Введите время:" << endl;
    cin >> t1 >> t2;
    fun1(m1, d1, t1, t2);
    cout << "Введите название театра:" << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> theat1[i];
    }
    cout << "Введите месяц:" << endl;
    cin >> m2;
    cout << "Введите день:" << endl;
    cin >> d2;
    fun2(theat1[20], m2, d2);
    cout << "Введите название представления:" << endl;
    for (int i = 0; i < n; i++)
    {
        cin >> name1[i];
    }
    fun3 (name1[20]); 
    system("pause");
    return 0;
}
int fun1(int m1, int d1, int t1, int t2)
{
    for (int i = 0; i < n; i++)
    {
        if (m1 == data1[i].m && d1 == data1[i].d)
        {
            cout << data[i].theat << endl << data1[i].m << endl << data1[i].d << endl;
            cout << (t1 > data1[i].tm && data1[i].tm <t2 ? data1[i].tm : (t1 > data1[i].td && data1[i].td < t2 ? data1[i].td : data1[i].tn));
            cout << data[i].time << endl << data[i].genre << endl;
        }
    }
    return 0;
}
int fun2(char* theat1,int m2, int d2)
{
    for (int i = 0; i < n; i++)
    {
        if (theat1 == data[i].theat && m2 == data1[i].m && d2 == data1[i].d)
            cout << data[i].theat << endl << data1[i].m << endl << data1[i].d << endl << data1[i].tm << ';'<< data1[i].td <<','<< data1[i].tn << endl << data[i].time << endl << data[i].genre << endl;
    }
    return 0;
}
int fun3(char* name1)
{
    for (int i = 0; i < n; i++)
    {
        if (name1 == data[i].name)
            cout << data1[i].m << endl << data1[i].d << endl << data1[i].tm << ';' << data1[i].td << ',' << data1[i].tn << endl;
    }
    return 0;
}
Теперь работает до сюда, и конец
Обработка данных о театральных событиях
Обработка данных о театральных событиях
0
ALucky
16 / 16 / 7
Регистрация: 02.09.2015
Сообщений: 38
07.11.2015, 19:52 8
Цитата Сообщение от Nastya15684 Посмотреть сообщение
char* theat1[20];
char* name1[20];
Не выделена память для массивов. Правильно:
C++
1
2
char* theat1 = new char[20];
char* name1 = new char[20];
Ввод также неверный.
Цитата Сообщение от Nastya15684 Посмотреть сообщение
for (int i = 0; i < n; i++)
* * {
* * * * cin >> theat1[i];
* * }
Цитата Сообщение от Nastya15684 Посмотреть сообщение
for (int i = 0; i < n; i++)
* * {
* * * * cin >> name1[i];
* * }
Правильно:
C++
1
cin >> theat1;
и
C++
1
cin >> name1;
Так же при вызове fun2 и fun3 не нужны квадратные скобки.

Желательно использовать класс String вместо char[], это всё-таки C++, а не С.

Кстати, ошибку это не вызывает, но тут бессмысленный цикл. Для чего Вам трижды перезаписывать одни переменные?
Цитата Сообщение от Nastya15684 Посмотреть сообщение
for (int j = 0; j < n; j++)
* * * * {
* * * * * * cout << "Введите месяц " << i + 1 << " представления:" << endl;
* * * * * * cin >> data1[i].m;
* * * * * * cout << "Введите день " << i + 1 << " представления:" << endl;
* * * * * * cin >> data1[i].d;
* * * * * * cout << "Введите время " << i + 1 << " представления:" << endl;
* * * * * * cin >> data1[i].tm >> data1[i].td >> data1[i].tn;
* * * * }
Возможно есть другие ошибки, полностью код не просматривал.

Добавлено через 9 минут
Цитата Сообщение от ALucky Посмотреть сообщение
Не выделена память для массивов.
Прошу прощения, ошибся, тут достаточно убрать * в Вашем варианте объявления.
0
07.11.2015, 19:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2015, 19:52

Обработка данных с амазона
Нужен ваш совет/напутствие. Вот есть такой онлайн магазин AMAZON, уверен...

Обработка символьных данных
Условие задачи: Дана не пустая последовательность слов ,в каждом из которых от...

Обработка текстовых данных
Уважаемы форумчане, помогите с решением задачи. Сначала нужно ввести n кол-во...


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

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

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