Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
pre-dawn-haze
Собственно, такое задание

Составить программу, которая содержит текущую информацию о заявках на авиабилеты.
Каждая заявка содержит:
o Пункт назначения;
o Номер рейса;
o Фамилию и инициалы пассажира;
o Желаемую дату вылета.
Программа должна обеспечивать:
o Хранение всех заявок в виде списка;
o добавление заявок в список;
o Удаление заявок;
o Вывод заявок по заданному номеру рейса и дате вылета;
o Вывод всех заявок.
--------------------------------
program avia;
const kol=10;
type z=record
mesto: string;
fio: string;
name: string;
number: integer;
date: record
day:1..31;
month: 1..12;
year: integer;
end;
end;

var zap: array [byte] of z;
a, b, c, d, r: array [1..10] of string;
i, k, n, h: integer;
zn: string;

procedure generate;
var m:byte;
begin
a[1]:='Андрей';
a[2]:='Иван';
a[3]:='Георгий';
a[4]:='Виктор';
a[5]:='Степан';
a[6]:='Владимир';
a[7]:='Михаил';
a[8]:='Максим';
a[9]:='Василий';
a[10]:='Сергей';
b[1]:='Иванов';
b[2]:='Петров';
b[3]:='Сидоров';
b[4]:='Ушаков';
b[5]:='Крылов';
b[6]:='Соколов';
b[7]:='Соловьев';
b[8]:='Зайцев';
b[9]:='Смирнов';
b[10]:='Кузнецов';
c[1]:='Ирина';
c[2]:='Полина';
c[3]:='Ангелина';
c[4]:='Екатерина';
c[5]:='Татьяна';
c[6]:='Анна';
c[7]:='Ксения';
c[8]:='Любовь';
c[9]:='Надежда';
c[10]:='Светлана';
d[1]:='Иванова';
d[2]:='Петрова';
d[3]:='Сидорова';
d[4]:='Комарова';
d[5]:='Крылова';
d[6]:='Соколова';
d[7]:='Соловьева';
d[8]:='Зайцева';
d[9]:='Смирнова';
d[10]:='Кузнецова';
r[1]:='Москва';
r[2]:='Воронеж';
r[3]:='Ростов';
r[4]:='Россошь';
r[5]:='Уральск';
r[6]:='Батайск';
r[7]:='Киров';
r[8]:='Липецк';
r[9]:='Владивосток';
r[10]:='Омск';
for i:=1 to kol do
begin
h:=random(2);
with zap[i] do
begin
begin
if h=0 then
begin
fio:=b[random(8)+1];
name:=a[random(8)+1];
end
else
begin
fio:=d[random(8)+1];
name:=c[random(8)+1];
end;
end;

date.day:=random(30)+1;
date.month:=random(12)+1;
date.year:=(2)+2010;
number:=random(5)+1001;
mesto:=r[random(8)+1];

end;
end;
end;
begin
generate;
writeln(' № Имя Фамилия Номер рейса Пункт назначения День Месяц Год');
for i:=1 to kol do
with zap[i] do
writeln(i:3,name:10,' ',fio:10,' ',number:8,' ',mesto:20,' ',date.day:3,' ' , date.month:4, date.year:10);

end.


заполнить могу, а как организовать обработку не представляю
Lapp
Весна на подходе - и предрассветная дымка снова с нами! )) Привет.

Цитата
заполнить могу, а как организовать обработку не представляю
Извини, но с заполнением у тебя тоже проблема. В задании сказано:
Цитата(pre-dawn-haze @ 6.02.2012 20:06) *

o Хранение всех заявок в виде списка;
o добавление заявок в список;
- а у тебя списком и не пахнет.. sad.gif То, что ты реализовала - это обычный массив. Кстати, заполнять его так поэлементно в теле программы - это, кхм.. несколько странно.. Его, наверное, нужно вводить (с клавы или из файла) или хотя бы задать константой на время отладки..

Почитай про списки. В нашем FAQе тоже про них есть. И поищи по форуму - подобные задачи решались.
И приходи с новыми вопросами )).

Федосеев Павел
Ну так, по мелочи - в начале программы желательно инициализировать генератор случайных чисел - Randomize.

Цитата
o Хранение всех заявок в виде списка;

Список - это динамическа структура (не массив) - посмотри в FAQ
Цитата
o добавление заявок в список;

Реализуй процедуру добавления в список нового элемента и заполнение 10-ю случайными элементами будет примерно следующим:

for i:=1 to 10 do begin
{заполнение полей записи}
with zap do begin
date.day:=random(30)+1;
date.month:=random(12)+1;
date.year:=(2)+2010;
number:=random(5)+1001;
mesto:=r[random(8)+1];
...........для name и fio.................
end;
{сохранение записи в списке}
AddItem(First, zap); {First - указатель на первый элемент списка}
end;


Цитата
o Удаление заявок;
o Вывод заявок по заданному номеру рейса и дате вылета;
o Вывод всех заявок.
в FAQ рассмотрено. Пожелаю лишь реализовать в виде отдельных процедур.

--------------------------
Sorry, Lapp

Я сли-ишко-ом до-о-олго клацал по кнопкам

pre-dawn-haze
Цитата(Lapp @ 6.02.2012 20:46) *

Весна на подходе - и предрассветная дымка снова с нами! )) Привет.

Извини, но с заполнением у тебя тоже проблема. В задании сказано:
- а у тебя списком и не пахнет.. sad.gif То, что ты реализовала - это обычный массив. Кстати, заполнять его так поэлементно в теле программы - это, кхм.. несколько странно.. Его, наверное, нужно вводить (с клавы или из файла) или хотя бы задать константой на время отладки..


привет smile.gif
в задании написано списки, списки вижу в первый раз(как и указатели), а реализовать необходимо через записи, заполнять так "рандомно" препод требует

буду разбираться
Lapp
Цитата(Федосеев Павел @ 6.02.2012 22:16) *
желательно инициализировать генератор случайных чисел - Randomize.
Паш, я очень не рекомендую это делать до того момента, как отладка программы завершена (или же отладка требует действительной случайности). Повторяемость "случайной" последовательности крайне удобна для целей отладки. Советую таки вставить его, закомментировать и снабдить замечанием: "uncomment in final release!!".

Цитата
Sorry, Lapp
Я сли-ишко-ом до-о-олго клацал по кнопкам
Няма пробем ).

Цитата(pre-dawn-haze @ 6.02.2012 22:43) *
в задании написано списки, списки вижу в первый раз(как и указатели), а реализовать необходимо через записи,
Ты только не вали все в одну кучу. Списки и записи - это все же разные вещи. Хотя для организации списков обычно используется запись, это все же не есть обязательное условие. Тем более, та запись, которая тут требуется - он точно не имеет никакого отношения к спискам, и подтверждение тому то, что ты сделала массив этих записей. _Почитай_ про списки и говори, где что неясно. А первый раз - он бывает у всех, ничего страшного.. ))

Цитата
заполнять так "рандомно" препод требует
оооооочень странное требование.. Выходит, заполнение списка информацией есть часть программы? Если реальные программы будут приходить в кассы по продаже билетов уже заполнренными - фиг кто сможет полететь в Воронеж, все самолеты будут усердно махать крылышками, возя туда-обратно мертвых душ... ))
Lapp
Я посмотрел на название темы и решил кое-что добавить.
Боюсь, ты стала жертвой некоторой терминологической путанницы..

Слово "запись" в языке Паскаль означает некоторую структуру в памяти, позволяющую хранить совместно разнотипные переменные. И это есть record.

Кроме этого, то же самое слово, запись, используеся иногда (совешенно неофициально и, я бы сказал, неправильно) для обозначения элемента списка. При этом список есть структура организация памяти, не имеющая отношения к зыку Паскаль вообще, то есть просто прием программирования, используемый в разных языках. И в данном случае, я уверен, в названии темы подразумевается именно это. Такое наименование для элемента списка не принесло бы никакой путаницы при программировании на Си, например, поскольку там нет записей (как record).

Может показаться, что это разночтение не так уж важно, поскольку (как я уже сказал), списки обычно состоят из записей.. Но при более близком рассмотрении это может привести к существенным ошибкам и в результате сожрать много твоего времени на разбоки, что есть что. Поэтому я тебе рекомендую с самого начала четче все уяснить и не вестись на жаргонные словечки, как "добавить запись в список". Не знаю, кто тебе это сказал, но только не слушай его. В список можно добавить только элемент. А то, что этот элемент огранизован в виде записи - просто имей в виду. Мухи - отдельно, котлеты - отдельно.

Таким образом, совет все тот же: разбирайся со списками.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.