Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов
Перезагрузить страницу И еще задачка. Тяжелее прошлых)
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
sweeney sweeney вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2008
По умолчанию И еще задачка. Тяжелее прошлых) - 15.12.2008, 21:48

Вот опять нужна помощь.. Пожалуйста, помогите))

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

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


ВОт.. спасибо всем заранее)))
Ответить с цитированием
  (#2 (permalink)) Старый
Vladimir_S Vladimir_S вне форума
Member
 
Сообщений: 423
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
По умолчанию 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. Дальше она сама.

Последний раз редактировалось Vladimir_S; 16.12.2008 в 12:22 Причина: Пояснение
Ответить с цитированием
  (#3 (permalink)) Старый
sweeney sweeney вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2008
По умолчанию 16.12.2008, 18:47

ооо)))) вы мой спаситель)))) спасибо))) огромное)
Ответить с цитированием
  (#4 (permalink)) Старый
Vladimir_S Vladimir_S вне форума
Member
 
Сообщений: 423
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
По умолчанию 19.12.2008, 11:21

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачка C++ ltony Вопросы начинающих программистов 1 04.02.2012 05:11
Задачка JustSteven Pascal 2 29.11.2011 14:19
Задачка User++ Prolog 11 22.03.2011 21:02
Задачка imported_Svop Prolog 7 29.04.2010 21:32
задачка Tina Prolog 2 06.04.2010 09:50
Задачка Julijanna Задания за деньги 8 30.09.2009 21:21
задачка на PHP Alexandr_14 PHP 4 06.02.2008 02:22
занимательная задачка Egor Офтопик 73 29.12.2007 17:19
задачка на С++ Katrinka Задания за деньги 1 17.05.2006 12:45
Задачка... :) Кошмар Офтопик 48 16.06.2005 22:32
Задачка про чай MiHanick Prolog 1 12.12.2004 12:23



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов