С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41

Расписание автобусов или как пользоваться time.h

16.11.2012, 15:40. Показов 5970. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравтвуйте. Есть задача:

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

Вот код(рабочий):

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.h>
#include <string.h>
int main ()
{
struct strc{
int a[100];//номер
char b[100];//тип автобуса
char c[100];//пункт назначения
int  d[100];//время отправления
int  D[100];
int  e[100];//время прибытия
int  E[100];
}bus[100];
int f,i,j,h,m;
cout << "vvedite kol-vo reisov"<<endl;
cin >> f;
for (i=0; i < f; i++)
{
bus[i].a[i] = 1+i;
cout << "vvedite tip avtobusa"<<endl;
cin >> bus[i].b;
cout << "vvedite punkt naznacheniya"<<endl;
cin >> bus[i].c;
cout << "vvedite vremya otpravleniya(hours(Enter)minutes)"<<endl;
cin >> bus[i].d[i];
cin >> bus[i].D[i];
cout << "vvedite vremya pribitiya(hours(Enter)minutes)"<<endl;
cin >> bus[i].e[i];
cin >> bus[i].E[i];
}
cout << "vvedite interesyUshee vas vremya pribitiya(hours(Enter)minutes)"<<endl;
cin >> h;
cin >> m;
j=0;
do
{
    if(h < bus[j].e[j])
    {
    cout << bus[j].a[j] << ". " << bus[j].b << " " << bus[j].c << " " << bus[j].d[j] << "." << bus[j].D[j] << " " << bus[j].e[j] << "." << bus[j].E[j]<<endl;
    }
    else
    {
        if(h == bus[j].e[j])
        {
        if(m <= bus[j].E[j])
        {
            cout << bus[j].a[j] << ". " << bus[j].b << " " << bus[j].c << " " << bus[j].d[j] << "." << bus[j].D[j] << " " << bus[j].e[j] << "." << bus[j].E[j]<<endl;
        }
    }
}
    j++;
}
while(j<f);
return 0;
}
Нужно организовать нормальный ввод времени и даты в расписание. Я пытался использовать функции библиотеки time.h, но я не понял как это работает, и абсолютно ничего не получилось.
Объясните пожалуйста как использовать time.h.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2012, 15:40
Ответы с готовыми решениями:

Расписание автобусов C++
Доброго всем дня ! Я в программирования не давно совсем , и так скажем не очень. Базу знаю только. Взял курсовую работу создание...

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

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

8
24 / 22 / 5
Регистрация: 13.11.2012
Сообщений: 49
16.11.2012, 16:10
А для чего у вас номер рейса объявлен, как массив?
А время прибытия и отправления объявлены как int, вы не будите использовать разделители часов и минут?

Ну и сам вопрос т.е. вам нужно ввести например 10:24? ввод руками из консоли?
если даты и время нужны только для отображения и с ними не будет никаких вычислений объявите их как char[6] для времени в формате 00:00 или как string.

Добавлено через 9 минут
Ой невнимательный я

функция time() возвращает время в секундах прошедших с 01.01.1970
для хранения время прибытия отправления можно использовать массив из двух элементов int[2] часы и минуты.
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
16.11.2012, 18:09  [ТС]
для часов и минут 2 разных массива:
C++
1
2
3
4
int  d[100];//время отправления
int  D[100];
int  e[100];//время прибытия
int  E[100];
Мне нужно:
1)ввод времени такой, чтобы нельзя было ввести 25 часов или 61 минуту, например
2)суть задачи : я ввожу время - прога выбивает мне пункты расписания которые мне подходят(по условию - автобусы приходящие позже заданного времени прибытия), не думаю, что char подойдёт

Извините, интернет тупит)
но пункт 1 всёравно актуален))

Добавлено через 16 минут
впринципе код работает, но мне нужен нормальный ввод времени. т.е. в формате часы:минуты и чтобы нельзя было ввести невозможное время + чтобы код не перестал работать как надо)))
впринципе, если не лень, скомпилируйте мой код и посмотрите что он делает, может так моя просьба понятнее будет)

Добавлено через 1 час 38 минут
Жду помощи
0
24 / 22 / 5
Регистрация: 13.11.2012
Сообщений: 49
16.11.2012, 18:16
Ввод и проверка времени и минут:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int timeInput () {
     char timeChar[6];
     int h,m;
 
     std::cout<<"Input time!\n";
     std::cin>>timeChar;         
     timeChar[5]='\n';      
     
     h = (timeChar[0]-48)*10 + (timeChar[1]-48);
     m = (timeChar[3]-48)*10 + (timeChar[4]-48);
     if (h>24||m>60) {
          std::cout<<"Wrong time!";
          return 0;
     }
          return :);
}
возвращать надо будет либо массив, либо указатель
1
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
16.11.2012, 18:26
Pavell, как вы будете возвращать массив?
указатель на локальный объект тоже будет никому не нужен.
тем более, что возвращаемый тип стоит int
1
24 / 22 / 5
Регистрация: 13.11.2012
Сообщений: 49
16.11.2012, 18:45
ну с массивом погорячился
кстати можно объявить массив за пределами функции передать его аргументом, и присвоить ему значения h и m, тогда функцию объявлять, как void
1
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
16.11.2012, 18:52
Цитата Сообщение от Pavell Посмотреть сообщение
ну с массивом погорячился
кстати можно объявить массив за пределами функции передать его аргументом, и присвоить ему значения h и m, тогда функцию объявлять, как void
Hammer-On, делайте вот так. Этот вариант верный)
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
16.11.2012, 18:56  [ТС]
спасибо) пробую)
0
24 / 22 / 5
Регистрация: 13.11.2012
Сообщений: 49
16.11.2012, 20:14
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
#include <iostream>
 
bool timeInput(int *tmp);
 
int main() {
    
    bool t=true;
    int timeInt[2];
    do {
         t=timeInput(&timeInt[0]);
    } while (!t);
 
}
 
bool timeInput (int *timeTmp) {
       char timeChar[6];
       int h,m;
 
       std::cout<<"Input time!\n";
       std::cin>>timeChar;         
       timeChar[5]='\n';      
     
       *timeTmp = (timeChar[0]-48)*10 + (timeChar[1]-48);
       *(timeTmp+1) = (timeChar[3]-48)*10 + (timeChar[4]-48);
       if (*timeTmp>24||*(timeTmp+1)>60) {
          std::cout<<"Wrong time!\n";
          return false;
        }
          return true;        
}
Добавлено через 55 минут
немного лишнего наворотил вот так красивее
bool timeInput(int *);

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main() {
    
    int timeInt[2];
    while (!timeInput(&timeInt[0]));
}
 
bool timeInput (int *timeTmp) {
       char timeChar[6];
       int h,m;
 
       std::cout<<"Input time in format hh:mm\n";
       std::cin>>timeChar;         
       timeChar[5]='\n';      
     
       *timeTmp = (timeChar[0]-48)*10 + (timeChar[1]-48);
       *(timeTmp+1) = (timeChar[3]-48)*10 + (timeChar[4]-48);
       if (*timeTmp>24||*(timeTmp+1)>60) {
          std::cout<<"Wrong time!\n";
          return false;
        }
          return true;        
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2012, 20:14
Помогаю со студенческими работами здесь

Как пользоваться time.h или качественный ввод времени в расписание
Здравтвуйте. Извините на форуме С++ для начинающих внятного ответа пока не получил, а время дорого. Есть задача: &quot;В...

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

Расписание автобусов в MS Access
Форумчане, выручайте, задали программу расписания автобусов в windows forms, чтобы были: график движения, автобусы, маршруты. Советуют...

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru