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

В справочной автовокзала хранится расписание движения автобусов

27.05.2018, 20:34. Показов 3989. Ответов 6
Метки нет (Все метки)

Код не работает, ошибку найти не могу.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2018, 20:34
Ответы с готовыми решениями:

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

В справочной автовокзала хранится расписание движения автобусов
В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса пункт...

В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип авто
В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его...

В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправ
В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его...

6
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
27.05.2018, 20:36 2
86рус, а, ну мы же все тут хуцкеры и давно взломали твой комп, нашли ошибку в коде и просто из вредности не говорим где она.

P.S. нужен код программы, если ты хочешь чтобы тебе с ним помогли.
1
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 4
27.05.2018, 20:37  [ТС] 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
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <climits>
#include <stdlib.h>
#include <fstream>
#include <string>
 
 
using namespace std;
 
 
int TimeToMin(string s)
{
    string hour, min;
    hour = s.substr(0, 2);
    min = s.substr(3, 2);
    return atoi(hour.c_str()) * 60 + atoi(min.c_str());
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    ifstream fin("C:\\Users\\1162223\\Documents\\input.txt", ios_base::out);
    ofstream fout("output.txt", ios_base::out);
    if (!fin.is_open() || !fout.is_open())
    {
        cout << "Файл не может быть открыт!\n";
        system("pause");
    }
    else
    {
        struct Buses
        {
            string B[4];
        } A[1000];
        string time;
        int k = 0;
        while (!fin.eof())
        {
            for (int j = 0; j < 4; j++)
            {
                fin >> A[k].B[j];
            }
            k++;
        }
        cout << "Введите время (hh:mm): ";
        getline(cin, time);
        fout << "FOUND RUNS:" << endl;
        for (int i = 0; i < k; i++)
        {
            if (TimeToMin(A[i].B[3]) < TimeToMin(time))
                fout << A[i].B[0] << " " << A[i].B[1] << " " << A[i].B[2] << " " << A[i].B[3] << endl;
        }
        fin.close();
        fout.close();
        system("pause");
        return 0;
    }
}
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 4
27.05.2018, 20:38  [ТС] 4
Первый раз тут тему кидаю, еще не разобрался что ,куда. Думал после можно будет код прикрепить
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
27.05.2018, 20:47 5
86рус, можно содержание файла input.txt?
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 4
27.05.2018, 20:52  [ТС] 6
Cortas,
23 DestionationA 02:45 03:08
78 DestionationB 16:30 17:55
34 DestionationC 17:05 17:57
89 DestionationD 01:10 02:04
44 DestionationE 03:55 04:47

Добавлено через 1 минуту
Cortas, Выдает ошибку out_of_range, что-то где-то вылезло за границы выделенной памяти.
а причину я найти не могу
0
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
27.05.2018, 21:18 7
Лучший ответ Сообщение было отмечено 86рус как решение

Решение

Так, вот исправленная программа с комментариями, однако под работу с твоей записью она не предназначена т.к. ты считаешь только время формата 12:30
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
#include <iostream>
#include <conio.h>
#include <cmath>
#include <climits>
#include <stdlib.h>
#include <fstream>
#include <string>
 
using namespace std;
 
int end() { std::cout << "\nEND\n"; _getch(); return 0; }
 
int TimeToMin(string s)
{
    string hour, min;
    hour = s.substr(0, 2);
    //min = s.substr(3, 2);[fix]тут вылетает,
    //т.к. вы пытаетесь получить доступ от 3 до 2 элемента, что сложно себе представить
    min = s.substr(3, 4);
    int tmp = atoi(hour.c_str()) * 60 + atoi(min.c_str());
    //return (atoi(hour.c_str()) * 60 + atoi(hour.c_str()));[fix]Видете ли, т.к. hour и min были созданы внутри функции,
    //то они "умирают" после того, как она закончит свою работы, потому, в функцию atoi передаются уже "мертвые" участки
    //памяти, где нет наших строк. Такие дела
    return tmp;
}
//Можете исследовать эту функию, она тоже переводит время в строке в целочисленное значение
//и в зависимости от кол-ва : (0 - часы, 1 - минуты, 2 - секунды) переводит все в тип int
int time_to_int(string& time)//перевод строку со временем в целочисленный вид
{
    int r = 0, temp = 0;//создаем элементы, ret - будем возвращать, temp - буфер
    for(int i = 0; i < time.size(); i++)
    {
        if(time[i] >= '0' && time[i] <= '9') //если это цифры
        {
            temp = temp * 10 + time[i] - 48;
        }
        else if(time[i] == ':') //если с часов перешли на минуты и т.д.
        {
            r = temp * 60; //переводим часы в минуты
            temp = 0; //обнуляем временную переменную
        }
    }
    r += temp; //добавляем минуты
    return r;
}
 
struct Buses
{
    //string B[4];[fix]зачем вам массив из 4 строк?
    string B;
} A[1000];//[advice] лучше либо считать сколько автобусов, а потом выделять под них память
//либо пользоваться шаблонными класами из билиотеки STL, тут, например, отлично подойдет vector
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "rus");
    //ifstream fin("input.txt", ios_base::out);[fix]к классу ifstream флаг необязателен на открытие, причем на вывод
    ifstream fin("input.txt");
    //ofstream fout("output.txt", ios_base::out);[fix]опять же, флаг на вывод не обязателен
    ofstream fout("output.txt");
    if(!fin.is_open() || !fout.is_open())
    {
        cout << "Файл не может быть открыт!\n";
        //system("pause");
    }
    else
    {
        /*struct Buses[advice] структуры лучше объявлять вне всех функций
        {
            string B[4];
        } A[1000];*/
        string time;
        int k = 0;
        char temp;
        while(!fin.eof())
        {
            for(int j = 0; !fin.eof() && j < 5; j++)//[new]не забываем проверять, чтобы файл не закончился
            {
                fin >> temp;
                A[k].B += temp;//fin >> A[k].B[j];
            }
            k++;
        }
        A[k - 1].B.clear(); //последняя строчка может считываться как знак конца файла, нам это не нужно
        cout << "Введите время (hh:mm): ";
        getline(cin, time);
        fout << "FOUND RUNS:" << endl;
        int time_in = TimeToMin(time);//[ad--
        for(int i = 0; i < k; i++)
        {
            //if(TimeToMin(A[i].B[3]) < TimeToMin(time))--vice] тут лучше взять переменную, и запомнить в неё результат TimeToMin(time), т.к. time - не меняется
            if(A[i].B.empty() != true && TimeToMin(A[i].B) < time_in)//также у вас не было защиты от работы с пустыми строками!
                fout << A[i].B << endl;//fout << A[i].B[0] << " " << A[i].B[1] << " " << A[i].B[2] << " " << A[i].B[3] << endl;
        }
        fin.close();
        fout.close();
        //system("pause");
    }
    return end();
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2018, 21:18
Помогаю со студенческими работами здесь

Расписание движения автобусов
Здравствуйте уважаемые эксперты! Есть следующее задание: В справочной автовокзала хранится...

Расписание движения автобусов
Помогите пожалуйста В справочной автовокзала хранится расписание движения автобусов. Для каждого...

Расписание движения пригородных автобусов
База данных содержит расписание движения пригородных автобусов: номер маршрута (целое трех-значное...

Справочная "Расписание движения автобусов"
Создать программу, реализующую поставленную задачу: В справочной автовокзала хранится расписание...


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

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

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