0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 10
1

Программа аврийно завершается при выводе в cout

25.12.2019, 20:06. Показов 592. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех!
Начал выполнять задание,связанное с расписанием поездов,но уже в самом начале столкнулся с такой проблемкой: cout перестает работать после объявления всех файлов типа struct. Не могли бы вы подсказать в чем конкретно проблема?(Вопрос автомата по программированию =) )
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
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct poezd
{
    string date;
    int train_number;
    string departure_time;
    string last_city;
    int coupe_space;
    int platscart_space;
};
int main()
{
    int c;
    poezd city[2];
    poezd date[6];
    poezd train[3];
    poezd time[4];
    poezd coupe[3];
    poezd plats[3];
    plats[0].platscart_space = 123;
    plats[1].platscart_space = 47;
    plats[2].platscart_space = 45;
    plats[3].platscart_space = 187;
    coupe[0].coupe_space=20;
    coupe[1].coupe_space = 14;
    coupe[2].coupe_space = 31;
    coupe[3].coupe_space = 10;
    time[0].departure_time="22:05";
    time[1].departure_time="10:30";
    time[2].departure_time="14:40";
    time[3].departure_time="21:50";
    time[4].departure_time="23:40";
    train[0].train_number=1;
    train[1].train_number=2;
    train[2].train_number=3; 
    train[3].train_number=4;
    date[0].date="Monday";
    date[1].date="Tuesday";
    date[2].date="Wednesday"; 
    date[3].date="Thursday";
    date[4].date="Friday";
    date[5].date="Saturday";
    date[6].date="Sunday";
    city[0].last_city="Moscow";
    city[1].last_city="Saint Petersburg";
    city[2].last_city="Novosibirsk";
    cout<<"Heh,zdarova! Vas privetstvuet MO-95 express!"<<endl;
    cout<<" 1-Moscow | 2-Saint Petersburg | 3-Novosibirsk"<<endl;
    cout<<"Viberite gorod(Viberi chislo):"<<endl;
    cin.get();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2019, 20:06
Ответы с готовыми решениями:

Использование функции при выводе в cout
Объясните, пожалуйста, почему так выводит 1 0. int f(int&amp; a){ return ++a; } int main(){ int...

Нет пробелов при выводе в cout
В чем ошибка, почему нету пробелов когда выход проходит в cout? Помогите пожалуйста. #include...

При выводе COUT стирает первую букву
Проблема: при выводе информации о проданных машинах, первая буква названия первой (и только первой,...

Не работает перегрузка операторов при выводе в cout
написал свой класс ComplexNumber. перегрузил для него операторы +, -, *, /, &lt;&lt;. конструкции вида ...

9
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 10
25.12.2019, 20:10  [ТС] 2
Приветствую всех!
Начал выполнять задание,связанное с расписанием поездов,но уже в самом начале столкнулся с такой проблемкой: cout перестает работать после объявления всех файлов типа struct. Не могли бы вы подсказать в чем конкретно проблема?(Вопрос автомата по программированию =) )
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
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct poezd
{
    string date;
    int train_number;
    string departure_time;
    string last_city;
    int coupe_space;
    int platscart_space;
};
int main()
{
    int c;
    poezd city[2];
    poezd date[6];
    poezd train[3];
    poezd time[4];
    poezd coupe[3];
    poezd plats[3];
    plats[0].platscart_space = 123;
    plats[1].platscart_space = 47;
    plats[2].platscart_space = 45;
    plats[3].platscart_space = 187;
    coupe[0].coupe_space=20;
    coupe[1].coupe_space = 14;
    coupe[2].coupe_space = 31;
    coupe[3].coupe_space = 10;
    time[0].departure_time="22:05";
    time[1].departure_time="10:30";
    time[2].departure_time="14:40";
    time[3].departure_time="21:50";
    time[4].departure_time="23:40";
    train[0].train_number=1;
    train[1].train_number=2;
    train[2].train_number=3; 
    train[3].train_number=4;
    date[0].date="Monday";
    date[1].date="Tuesday";
    date[2].date="Wednesday"; 
    date[3].date="Thursday";
    date[4].date="Friday";
    date[5].date="Saturday";
    date[6].date="Sunday";
    city[0].last_city="Moscow";
    city[1].last_city="Saint Petersburg";
    city[2].last_city="Novosibirsk";
    cout<<"Heh,zdarova! Vas privetstvuet MO-95 express!"<<endl;
    cout<<" 1-Moscow | 2-Saint Petersburg | 3-Novosibirsk"<<endl;
    cout<<"Viberite gorod(Viberi chislo):"<<endl;
    cin.get();
    return 0;
}
0
Модератор
Эксперт С++
13619 / 10844 / 6447
Регистрация: 18.12.2011
Сообщений: 28,913
25.12.2019, 20:18 3
1. Вы везде задали размер массивов на 1 меньше, чем используете.

2. Что за хрень с использованием данных?
Разумно объявить ОДИН массив и в нем уже заполнять ВСЕ поля!
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
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct poezd
{
    string date;
    int train_number;
    string departure_time;
    string last_city;
    int coupe_space;
    int platscart_space;
};
int main()
{
    poezd pp[7];
    for (int i = 0; i < 7; i++)
    {
        pp[i].date = "";
        pp[i].train_number = i+1;
        pp[i].departure_time = "";
        pp[i].last_city = "Moscow";
        pp[i].coupe_space = 36;
        pp[i].platscart_space = 52;
    }
 
    pp[0].date = "Monday";
    pp[1].date = "Tuesday";
    pp[2].date = "Wednesday";
    pp[3].date = "Thursday";
    pp[4].date = "Friday";
    pp[5].date = "Saturday";
    pp[6].date = "Sunday";
 
    pp[0].departure_time = "22:05";
    pp[1].departure_time = "10:30";
    pp[2].departure_time = "14:40";
    pp[3].departure_time = "21:50";
    pp[4].departure_time = "23:40";
    pp[5].departure_time = "23:50";
    pp[6].departure_time = "23:55";
 
    
    pp[1].last_city = "Saint Petersburg";
    pp[2].last_city = "Novosibirsk";
    pp[6].last_city = "Saint Petersburg";
 
    cout << "Heh,zdarova! Vas privetstvuet MO-95 express!\n" << endl;
    cout << "Vvedite gorod:" << endl;
    cout << "Moscow\nSaint Petersburg\nNovosibirsk\n" << endl;
    string t;
    getline(cin, t);
    for (int i = 0; i < 7; i++)
    {
        if (t == pp[i].last_city)
        {
            cout <<"Tain#"<< pp[i].train_number<<" "<< pp[i].date << " " << pp[i].departure_time << endl;
        }
    }
    cin.get();
    return 0;
}
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 10
25.12.2019, 20:29  [ТС] 4
1.Если я не ошибаюсь,то массив начинает считаться с 0,разве нет? (То есть Arr[3] имеет в себе 4 "ячейки")
2.Не могли бы вы показать как стоит сделать,просто не совсем понимаю как можно это все запихнуть в массив.
0
45 / 33 / 15
Регистрация: 29.04.2014
Сообщений: 225
25.12.2019, 20:38 5
не понятен вопрос))
0
Модератор
Эксперт С++
13619 / 10844 / 6447
Регистрация: 18.12.2011
Сообщений: 28,913
25.12.2019, 20:41 6
Цитата Сообщение от Milstray Посмотреть сообщение
То есть Arr[3] имеет в себе 4 "ячейки"
Arr[3] имеет в себе 3 "ячейки":
Arr[0], Arr[1] и Arr[2]

Добавлено через 45 секунд
Цитата Сообщение от Milstray Посмотреть сообщение
как можно это все запихнуть в массив
Я вставил код в мой первый пост
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 10
25.12.2019, 20:44  [ТС] 7
Ах да, действительно так, не представляю как я мог так сильно затупить. Но не могли бы вы объяснить почему cout отказывается работать в моем коде?
0
Модератор
Эксперт С++
13619 / 10844 / 6447
Регистрация: 18.12.2011
Сообщений: 28,913
25.12.2019, 21:11 8
Цитата Сообщение от Milstray Посмотреть сообщение
почему cout отказывается работать в моем коде
Неопределенное поведение - при выходе за границы массива может произойти все что угодно.
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
26.12.2019, 10:09 9
Цитата Сообщение от Milstray Посмотреть сообщение
Начал выполнять задание,связанное с расписанием поездов,но уже в самом начале столкнулся с такой проблемкой: cout перестает работать после объявления всех файлов типа struct. Не могли бы вы подсказать в чем конкретно проблема?(Вопрос автомата по программированию =) )
Цитата Сообщение от Milstray Посмотреть сообщение
poezd plats[3];
    plats[0].platscart_space = 123;
    plats[1].platscart_space = 47;
    plats[2].platscart_space = 45;
    plats[3].platscart_space = 187;
Ты заполняешь четыре элементв - 0, 1, 2, 3. Т.е. здесь должно быть poezd plats[4];
То же самое касается остальных массивов, проверь
0
4262 / 3321 / 925
Регистрация: 25.03.2012
Сообщений: 12,501
Записей в блоге: 1
26.12.2019, 10:38 10
2. Что за хрень с использованием данных?
Разумно объявить ОДИН массив и в нем уже заполнять ВСЕ поля!

Вот такого быть не должно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct poezd
{
    string date;
    int train_number;
    string departure_time;
    string last_city;
    int coupe_space;
    int platscart_space;
};
int main()
{
    int c;
    poezd city[2];
    poezd date[6];
    poezd train[3];
    poezd time[4];
    poezd coupe[3];
    poezd plats[3];
Ты принципиально не понимаешь, что такое структуры.
city date train и.т.д. Ты вводишь в структурную переменную, а не в массивы интов.
Если тебе нужно 7 поездов, вводишь в массив из 7 структур, а не в семь разных массивов! В этом и весь смысл структур, чтоб не повторять по 6 раз одно и то же для каждого отдельного поезда!

Добавлено через 2 минуты
C++
1
2
3
4
5
6
poezd train[7];
for (int i=0; i<7; ++i)
  cin>>train[i].date;
  cin>>train[i].number;
  cin>>train[i].departure_time;
//......
1
26.12.2019, 10:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2019, 10:38
Помогаю со студенческими работами здесь

При выводе в консоль std::cout - выдаёт кашу
Добрый вечер, столкнулся с проблемой, что при выводе в консоль к примеру: std::cout &lt;&lt; &quot;tmpFirst: &quot;...

Введенная по getche строка стирается с экрана при выводе в cout
Когда ввожу число, то в консоли стирается запись об &quot;Input a number: 123456&quot; и показывается только...

При выводе посредством cout() получается один и тот же набор цифр
Здравствуйте дорогие форумчане. У меня трабл. В независимости от того что я подаю в cout, результат...

Программа завершается при проверке условий
при выполнении условий if (m&lt;2) or (m&gt;5) or (f&lt;2) or (f&gt;5) выкидывает из программы, исправьте...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru