Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 13.04.2013
Сообщений: 20
1

Расписание электричек вводиться с клавиатуры. Каждая запись содержит название пункта назначения, пометки типа «СВ», «ПВ», «КСВ» и время отправления

13.04.2013, 07:48. Показов 1656. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делюсь рабочей прогой

Условия задачи:
Расписание электричек вводиться с клавиатуры. Каждая запись содержит название пункта назначения, пометки типа «СВ», «ПВ», «КСВ» и время отправления.
Написать программу, выполняющую следующие действия:
□ корректировку или дополнение расписания с клавиатуры;
□ сортировку по станции назначения или по времени отправления;
□ вывод на экран информации о поездах, отходящих после введенного времени;

Код:
Pascal
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
type      dann = record
          pun_nazn: string;
          pometki: string;
          chas: byte;
          min: byte;
          end;
          mas = array [1..10] of dann;
var k,v,i,n,nmenu,nn: byte; elect: mas;
{------------ВВОД--------------}
Procedure readd (var e: mas; t: word);
var n:word;
begin 
writeln('Введите данные поездах в таком порядке');
 writeln('Пункт назначения | Пометки (СВ/ПВ/КСВ) | Час отправления (0-23) | Минуты отправления');
 for n:=1 to t do begin
 readln(e[n].pun_nazn); 
 readln(e[n].pometki); 
 readln(e[n].chas); 
 readln(e[n].min);
 end; end;
 
{------------корректировка--------------} 
 
 Procedure korr (var e:mas; t:word); {массив записей и кол-во зап }
 var n, ns,f:word; 
 begin
 for n:=1 to t do
 writeln(n,'-',e[n].pun_nazn,' ', e[n].pometki,' ', e[n].chas,' ', e[n].min);
 f:=1;
 while f=1 do
 begin
 writeln('Введите номер строки, которую хотите отредактировать');
 readln(ns);
 writeln('Через ENTER напишите заново Пункт назначения | Пометки (СВ/ПВ/КСВ) | Час отправления (0-23) | Минуты отправления для этой записи');
readln(e[ns].pun_nazn); 
 readln(e[ns].pometki); 
 readln(e[ns].chas); 
 readln(e[ns].min);
 writeln('Измененное расписание:');
 for n:=1 to t do
 writeln(n,'-',e[n].pun_nazn,' ', e[n].pometki,' ', e[n].chas,' ', e[n].min);
 writeln('Есть еще строки, подлежащие редактированию? Если "Да" ввидите - 1, "Нет" - 0');
 readln(f);
 end;
 end;
{---------дополнение-----------}
Function dopol (var e:mas; t:word):word;
var i, n, k, l: word; f:dann; b: boolean;
begin
writeln('Введите количество поездов');
readln (k);
writeln('Пункт назначения | Пометки (СВ/ПВ/КСВ) | Час отправления (0-23) | Минуты отправления');
 l:=t+k;
 for n:=t+1 to l do begin
 readln(e[n].pun_nazn); 
 readln(e[n].pometki); 
 readln(e[n].chas); 
 readln(e[n].min);
 end; 
 dopol:=l;
 end;
{---------сортировка по станции---------}
function match (s1, s2 : string) : boolean;
var i, n : integer; {n - длина наименьшей строки}
begin
      s1 := UpperCase(s1);
      s2 := UpperCase(s2);
 if length(s1) > length(s2) then n := length(s2)
          else n := length(s1); {наименьший}
 i := 1;
 while (i <= n) and (s1[i] = s2[i]) do inc(i); {сравниваем пока и если начала одинаковые}
 if i = n + 1 then 
    begin
  if (length(s1) = length(s2)) 
  then match := true {Фамилии абсолютно совпадают}
      else if (length(s1) < length(s2)) 
            then match := true {"Петров" шёл перед "Петрова"}
  else match := false;
 end
 else begin
  if ord(s1[i]) < ord(s2[i]) then match := true else match := false;
 end;
end;
{---------------}
Procedure sort_s (var e:mas; t:word);
var i, n, j: word; f:dann; b: boolean;
begin
for i:=1 to t-1 do
     for j:=1 to t-i do
     begin
         b := match (e[j].pun_nazn, e[j+1].pun_nazn);
         if b = false then
         begin
              f:=e[j];
              e[j]:=e[j+1];
              e[j+1]:=f;
         end;
     end; 
     end;
{-------сортировка по времени-------}
Procedure sort_v (var e:mas; t:word);
var i, min, j, nom: word; f:dann; b: boolean;
begin
for i:=1 to t-1 do
begin
f:=e[i]; nom:=i;
for j:=i+1 to t do
begin
if (e[nom].chas>e[j].chas) then nom:=j;
end;
if (nom<>i) then
begin
e[i]:=e[nom];
e[nom]:=f;
end;
end;
 
for i:=1 to t-1 do
begin
f:=e[i]; nom:=i;
for j:=i+1 to t do
begin
if (e[nom].chas=e[j].chas) and (e[nom].min>e[j].min) then nom:=j;
end;
if (nom<>i) then
begin
e[i]:=e[nom];
e[nom]:=f;
end;
end;
end;
{----------инф о поездах после введенного времени------------}
Procedure inf_v (var e: mas; t:word);
var i, m, h: word;
begin
writeln('Введите час отправления и минуты');
readln(h, m);
for i:=1 to t do
if (e[i].chas = h) and (e[i].min >m) or (e[i].chas > h) then
writeln(i,'-',e[i].pun_nazn,' ', e[i].pometki,' ', e[i].chas,' ', e[i].min);
end;
{----вывод по-бырому---}     
Procedure vv (var e: mas; t:word);
var n: word;
begin
for n:=1 to t do
writeln(n,'-',e[n].pun_nazn,' ', e[n].pometki,' ', e[n].chas,' ', e[n].min);
end;
{------------сама прога--------}
  begin
  n:=1;
     writeln       ('____________________________');
     writeln       ('|           MENU           |');
     writeln       ('| 1) Ввод данных           |');
     writeln       ('| 2) Вывод всего расписания|');
     writeln       ('| 3) Корректировка данных  |');
     writeln       ('| 4) Дополнение расписания |');
     writeln       ('| 5) Сортировка по         |');
     writeln       ('|   станции назначения     |');
     writeln       ('| 6) Сортировка по         |');
     writeln       ('|   времени отправления    |');
     writeln       ('| 7) Вывод информации      |');
     writeln       ('|   о поездах, отходящих   |');
     writeln       ('| после введенного времени |');
     writeln       ('| 8) Добавление в файл     |');
     writeln       ('| 0) Выход                 |');
     writeln       ('____________________________');
     
     while n>0 do
  begin
     writeln (' выберите пункт меню');
     
     readln  (nmenu);
     case nmenu of
       1: begin writeln('Введите количество поездов в расписании < 10'); readln(n); readd(elect,n); end;
       2: vv (elect, n);
       3: korr(elect,n);
       4: n:=dopol (elect, n);
       5: sort_s (elect, n);
       6: sort_v (elect, n);
       7: inf_v (elect, n);
       0: exit;
     end;
end;
 end.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2013, 07:48
Ответы с готовыми решениями:

Описать запись с именем TRAIN, содержащую следующие поля:название пункта назначения; номер поезда;время отправления
привет мальчики, помогите решить задачки пожалуйста, сегодня скинули, оказывается без них я не...

Описать класс «Расписание занятий». Каждая запись содержит день недели, время, название учебной дисциплины, а
Описать класс «Расписание занятий». Каждая запись содержит день недели, время, название учебной...

Создать файл, содержащий сведения о пассажирах поездов. Каждая запись содержит поля: фамилию пассажира, номер поезда, пункт отправления
Создать файл, содержащий сведения о пассажирах поездов. Каждая запись содержит поля: фамилию...

Железнодорожное расписание или расписание электричек на Java в среде NetBeans
помогите пожалуйста сделать программку нужно сделать железнодорожное расписание или расписание...

0
13.04.2013, 07:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2013, 07:48
Помогаю со студенческими работами здесь

По номеру поезда вывести название пункта назначения (сделать двумя способами)
Составить программу для решения поставленной задачи двумя способами: используя: 1) команды case 2)...

Вывести название пункта назначения и выдать все рейсы, связанные с этим пунктом
пожалуйста помогите. в элементе списка содержатся данные о рейсах самолетов: 1)№ рейса; 2)тип...

Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; • номер поезда; •
Описать структуру с именем TRAIN, содержащую следующие поля: • название пункта назначения; ...

Файл содержит сведения о стаже работы сотрудников, каждая запись которого содержит поля: наименование кафедры
Ребят,помогите с паскалем 1. Файл содержит сведения о стаже работы сотрудников, каждая запись...


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

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