Консультация № 160495
15.02.2009, 01:47
0.00 руб.
0 7 1
1. Описать пользовательский тип данных с именем AEROFLOT типа
запись (RECORD), содержащий следующие поля:
- NAZN - название пункта назначения рейса - (тип STRING);
- NUMR - номер рейса (тип INTEGER);
- TIP - тип самолета (тип STRING).
2. Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив AIPORT, состоящий из 7-и эле-
ментов типа AEROFLOT; записи должны быть размещены в алфавитном поряд-
ке по названиям пунктов назначения.
- вывод на экран пунктов назначения и номеров рейсов, обслуживае-
мых самолетом, тип которого введен с клавиатуры;
- если таких рейсов нет - выдать на дисплей соответствующее со-
общение
Выбор режима работы программы и ввод исходных данных осуществля-
ется через окно диалога. Формируемый массив AIRPORT отображаетя в окне
исходных данных. Результаты поиска отображаются в окне результатов.

Обсуждение

Неизвестный
15.02.2009, 02:00
общий
Окно диалога,окно исходных данных, окно результата - мы о консольном приложении на паскале говорим или о чем? Что то окон многовато.
давно
Профессор
401888
1232
15.02.2009, 12:03
общий
После каждого clrscr; новое окно.
давно
Профессор
401888
1232
15.02.2009, 12:46
общий
это ответ
Здравствуйте, Evildead!
Решение задачи в приложении.

Приложение:
uses crt;
const n=7; {количество записей по условию}
type Aeroflot=record {тип запись с полями по условию}
nazn:string[15];
numr:integer;
tip:string[15];
end;
var airoport:array[1..n]of Aeroflot;{тип массива по условию}
x:Aeroflot; {переменная буфер для сортировки записей}
tp:string[15];{переменная для запроса типа самолета}
i,j,k:byte; {счетчики}
begin
clrscr;
writeln('Введите данные о ',n,' рейсах:');
for i:=1 to n do
begin
writeln('Рейс ',i);
write('Название пункта назначения: ');readln(airoport[i].nazn);
write('Номер рейса: ');readln(airoport[i].numr);
write('Тип самолета: ');readln(airoport[i].tip);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if airoport[i].nazn>airoport[j].nazn then {сортировка пузырьком по возрастанию поля название(по алфавиту)}
begin
x:=airoport[i];
airoport[i]:=airoport[j];
airoport[j]:=x;
end;
clrscr; {очищаем экран}
writeln('Данные о рейсах по в алфавитном порядке по пункту назначения:');
for i:=1 to n do {выводим записи по алфавиту}
writeln(airoport[i].nazn,' ',airoport[i].numr,' ',airoport[i].tip);
readln;
clrscr; {очищаем экран}
write('Введите тип самолета: '); {запрашиваем тип самолета}
readln(tp);
k:=0;
for i:=1 to n do
if airoport[i].tip=tp then {если поле название совпадает с запросом}
begin
k:=1;{фиксируем}
writeln(airoport[i].nazn,' ',airoport[i].numr);{выводим сведения}
end;
if k=0 then write('Таких рейсов нет!');{если ни одного совпадения}
readln
end.
давно
Старший Модератор
31795
6196
16.02.2009, 14:50
общий
Окно диалога,окно исходных данных, окно результата - мы о консольном приложении на паскале говорим или о чем?

Можно и я свои пять копеек вставлю:
Цитата: их хелпа ТР 7.0
Window (процедура) (модуль Crt) Определяет на экране текстовое окно.
Объявление: Procedure Window(X1, Y1, X2, Y2 : Byte);
Режим: Real, Protected
Замечания: X1 и Y1 - координаты верхнего левого угла окна, а X2 и Y2 - координаты нижнего правого угла. Координата верхнего левого угла экрана равна (1, 1). Минимальный размер текстового окна - один столбец на одну строку. Если какая-либо координата недопустима, то обращение к процедуре Window игнорируется.

Какие проблемы разнести разные окна в разные места экрана и каждый раз определять текущее. А потом работать просто в разных местах экрана косольного приложения, можно даже в цвете:
Код:
uses crt;
begin
window(1,1,10,10);
textbackground(11);
textcolor(12);
clrscr;
writeln('A');
window(11,11,20,20);
textbackground(7);
textcolor(13);
clrscr;
writeln('B');
readln;
end.


Если окна будут пересекатся, тут нужно будет сохранять затираемую часть, а это уже лишний код, но тоже все решаемо.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
16.02.2009, 15:04
общий
Я уже просто отвык от таких окон. Если это можно назвать окнами. Поскольку в данном случае название и описание и работа процедуры window() несколько отстало от современных представлений об интерфейсе.
давно
Старший Модератор
31795
6196
16.02.2009, 15:47
общий
Micren:

Когда-то Norton Commander сделал практически "взрыв" введя имитацию оконного интерфейса и якобы трёх-мерности(с помощью тени).

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
16.02.2009, 16:00
общий
Ага я еще не забыл это. Тогда NC был самый крутой файловый менеджер. Но с тех пор прошло лет так 20.
Форма ответа