Форум программистов, компьютерный форум CyberForum.ru

Линейный список, подсчет времени - C++

Восстановить пароль Регистрация
 
TRi_kA
Сообщений: n/a
12.06.2013, 00:00     Линейный список, подсчет времени #1
Текст задачи:
Информационная система метро содержит сведения для каждого поезда: номер поезда (трехзначный), время отправления, интервалы между станциями (массив из 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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
using std:: cout;
using std:: cin;
 
struct List
 {int number;
 float Time;
 float *In;
 List*next;
 };
 
 
List*AddList(List*begin, int a, float t, float *An)
 {List*Add=new List;
 Add->number=a;
 Add->Time=t;
 Add->In=An;
 Add->next=NULL;
 if (begin==NULL)
  return Add;
 else
 {List*current=begin;
 while (current->next!=NULL)
 current=current->next;
 current->next=Add;}
 return begin;
 }
 
List*Make_List(int n)
 {List*First=NULL;
  int a; float t;
 for (int i=0; i<n; i++)
  {float *An=new float[8];
   cout<<"vvedite nomer poezda"<<endl;
   cin>>a;
   while ((a<0)||(a>1000))
   {cout<<"net takogo nomera, vvedite zanovo"<<endl;
   cin>>a;}
   cout<<"vvedite vremya otpravlenia"<<endl;
   cin>>t;
   while ((t>24) || (t-int(t)>0.6) || (t<0))
   {cout<<"nepravilnoe vremya, vvedite zanovo"<<endl;
    cin>>t;}
   cout<<"vvedite 8 intervalov mezhdu stanciyami"<<endl;
   for (int i=0; i<8; i++)
    {cin>>An[i];
     while (An[i]<0)
     {cout<<"vvedite zanovo"<<endl;
      cin>>An[i];
      }
      }
   First=AddList(First, a, t, An);
   }
   return First;
   }
 
void Print_List(List*first)
 {List*cur=first;
 while(cur!=NULL)
  {cout<<"nomer poezda ";
  if (((cur->number)<100)&&((cur->number)>=10))
   cout<<"0"<<cur->number<<endl;
 else
 if (((cur->number)<10)&&((cur->number)>=0))
  cout<<"00"<<cur->number<<endl;
  else
  cout<<cur->number<<endl;
  cout<<"vremya otpravlenia "<<cur->Time<<endl;
  for (int i=0; i<8; i++)
  cout<<"interval "<<cur->In[i]<<endl;
  cur=cur->next;}
  }
 
void Print(List*first)
 {List*cur=first; int b, i=0;
 cout<<"vvedite nomer poezda"<<endl;
 cin>>b;
 while(cur!=NULL)
  {if (cur->number==b)
      {cout<<"nomer poezda ";
      if ((cur->number<100)&&(cur->number>=10))
      cout<<"0"<<cur->number<<endl;
      else
       if ((cur->number<10)&&(cur->number>=0))
       cout<<"00"<<cur->number<<endl;
       else
       cout<<cur->number<<endl;
  cout<<"vremya otpravlenia "<<cur->Time<<endl;
  for (i=0; i<8; i++)
  cout<<"interval "<<cur->In[i]<<endl;}
  cur=cur->next;}
  if (i==0)
  cout<<"net takogo poezda"<<endl;
  }
  
void Print2(List*first)
 { //здесь должна быть функция, для подсчета времени и пр., но тут сплошной изврат, который еще и не работает
  }
 
int main()
{List*A=NULL;
int n, k=0;
cout<<"skolko poezdov"<<endl;
cin>>n;
A=Make_List(n);
Print_List(A);
while (k!=3)
{cout<<"vvedite komandu"<<endl<<"comandi:"<<endl<<"1 - dannie poezda"<<endl;
cout<<"2 - grafic poezda"<<endl<<"3 - vihod is programmi"<<endl;
cin>>k;
switch (k)
{case 1:Print(A);
break;
case 2:Print2(A);
break;
case 3: break;
default: cout<<"net takoi komandi"<<endl;
break;
}
}
 return 0;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 00:00     Линейный список, подсчет времени
Посмотрите здесь:

C++ линейный список на с++
C++ Линейный список.
C++ Линейный список
C++ Линейный список
C++ [C++] Линейный список
Линейный список C++
Линейный список C++
Линейный список C++

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

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

Текущее время: 08:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru