Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   И еще задачка. Тяжелее прошлых) (http://www.tehnari.ru/f41/t18458/)

sweeney 15.12.2008 21:48

И еще задачка. Тяжелее прошлых)
 
Вот опять нужна помощь.. Пожалуйста, помогите))

текст программы:

1. Описать пользовательский тип данных с именем TRAIN типа запись
(RECORD), содержащий следующие поля:
- NAZN - название пункта назначения - (тип STRING);
- NUMR - номер поезда (тип INTEGER);
- TIME - время отправления (тип STRING).
2. Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив RASP, состоящий из 8-и эле-
ментов типа TRAIN; записи должны быть упорядочены по номерам поездов.
- вывод на экран информации о поезде, номер которого введен с
клавиатуры;
- если таких поездов нет - выдать на дисплей соответствующее со-
общение
Выбор режима работы программы и ввод исходных данных осуществля-
ется через окно диалога. Формируемый массив RASP отображаетя в окне
исходных данных. Результаты поиска отображаются в окне результатов.


ВОт.. спасибо всем заранее)))

Vladimir_S 16.12.2008 12:11

Пожалуйста:

PROGRAM Time_Table;

TYPE

TRAIN = Record
Nazn: STRING;
NUMBER:INTEGER;
TIME:STRING;
END;

VAR

RASP,RASP_bef: ARRAY[1..8] of TRAIN;
Hours, Minutes, S:String;
Hr, Min, i, j, i0, Max, Num, Train_Number:Integer;
Train_Exists:BOOLEAN;

BEGIN

{Ввод данных в расписание}
FOR i:=1 TO 8 DO
BEGIN
Write('Введите номер поезда '); ReadLn(RASP_bef[i].NUMBER);
Write('Введите пункт назначения '); ReadLn(RASP_bef[i].Nazn);
Write('Время отправления. Введите часы '); Readln(Hr);
Str(Hr,S);
IF Hr>=10 THEN Hours:=S ELSE Hours:='0'+S[1];
Str(Min,S);
Write('Время отправления. Введите минуты '); Readln(Min);
IF Min>=10 THEN Minutes:=S ELSE
Minutes:='0'+S[1];
RASP_bef[i].Time:=Hours+'.'+Minutes;
END;

{Упорядочение по номерам поездов}
Num:=8;
FOR j:=1 TO 8 DO
BEGIN
Max:=10000;
FOR i:=1 TO Num DO
IF RASP_bef[i].NUMBER<Max THEN
BEGIN
Max:= RASP_bef[i].NUMBER;
i0:=i;
END;
RASP[j]:=RASP_bef[i0];
IF i0=Num THEN Dec(Num) ELSE
BEGIN
FOR i:=i0+1 TO Num DO RASP_bef[i-1]:=RASP_bef[i];
Dec(Num);
END;
END;

{Показ расписания}
WriteLn;
WriteLn('Расписание:');
FOR i:=1 TO 8 DO
BEGIN
Write('Поезд N: ', RASP[i].NUMBER);
Write(' Пункт: ', RASP[i].Nazn);
Write(' Время: ', RASP[i].TIME);
Writeln;
END;
WriteLn('Для продолжения нажмите "ENTER"');
ReadLn;

{Выдача информации о поедах}
WriteLn;
Writeln('Для выхода из программы введите нулевой номер поезда');
REPEAT
Train_Exists:=FALSE;
Write('Введите номер поезда '); ReadLn(Train_Number);
IF Train_Number>0 THEN
BEGIN
i:=0;
REPEAT
Inc(i);
IF i<9 THEN
IF RASP[i].NUMBER=Train_Number THEN
BEGIN
Train_Exists:=TRUE;
Writeln('Поезд N: ', Train_Number);
Writeln('Пункт назначения: ', RASP[i].Nazn);
Writeln('Время отправления: ', RASP[i].TIME);
END;
UNTIL (Train_Exists) OR (i=9);
IF i=9 THEN WriteLn('Такого поезда нет!');
WriteLn;
END;
UNTIL Train_Number = 0;

END.


Да, на всякий случай - часы и минуты отправления поездов вводятся в ЧИСЛОВОМ формате, т.е. не 07, а просто 7. Дальше она сама.

sweeney 16.12.2008 18:47

ооо)))) вы мой спаситель)))) спасибо))) огромное)

Vladimir_S 19.12.2008 11:21

Черт, сейчас просмотрел программу и заметил одну ошибку - строка
Str(Min,S);
должна быть, естественно, ПОСЛЕ строки
Write('Время отправления. Введите минуты '); Readln(Min);
Приношу извинения.


Часовой пояс GMT +4, время: 12:18.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.