Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.раб.3.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
207.87 Кб
Скачать

Пример 3

Пассажирский самолет может поднять груз общим весом 30 т. Составить программу для определения веса почтового груза, который можно поместить в самолете после посадки пассажиров и загрузки их багажа. Во время регистрации пассажиров ЭВМ должна подсчитывать количество пассажиров (условный вес одного пассажира 70 кг). Предусмотреть возможность ввода номера пассажира и веса его багажа в таблицу и вывода таблицы на экран. Упорядочить номера пассажиров в зависимости от веса багажа пассажиров.

Unit Work;

Interface

Const N = 7; {количество элементов массива}

Type mas = array [1..N] of integer;

Procedure View( x : mas ; l :integer) {информация о пассажирах}

Procedure zapolnenie (var x: mas); {заполнение элементов массива}

procedure Create( var x : mas ; var l :integer); {регистрация пассажиров}

procedure View_sort( x : mas ; l :integer); {oтсортированный просмотр пассажиров}

procedure Gruz( x : mas ; l :integer); {почтовый груз}

procedure sort(var x,y : array of integer ; count : integer); {сортируется массив x, а элементы y переставляются соответственно}

Implementation

{информация о пассажирах}

procedure View( x : mas ; l :integer);

var

i, S : integer;

begin

Writeln(' Информация о пассажирах');

Writeln('| № п/п| Регистрационный № | Вес багажа |');

Writeln('_________________________________________');

S := 0;

For i := 1 to l do

begin

WriteLn('|', i:4 , ' | ', x[1,i]:6,' | ', x[2,i]:6,' | ');

S := S + x[2,i] + ves;

Writeln('_________________________________________');

end;

Writeln ('Всего ', l, ' пассажиров');

Writeln ('Общий вес ', S);

ReadKey;

end;

{регистрация пассажиров}

procedure Create( var x : mas ; var l :integer);

var

i, S : integer;

ch : char;

begin

Writeln('Регистрация пассажиров');

i := 0; S := 0;

repeat

inc(i);

write('Введите регистрационный номер ',i, '-го пассажира ');

ReadLn(x[1,i]);

write('Введите вес багажа ',i, '-го пассажира ');

ReadLn(x[2,i]);

S := S + x[2,i] + ves;

Write('Продолжить? (Y/N) ');

ReadLn(ch);

If (i > N) or (S > N_max) then

begin

writeln('Самолет перегружен!');

break

end;

until (ch='N') or (ch='n');

l := i;

Writeln ('Регистрация завершена');

ReadKey;

end;

{oтсортированный просмотр пассажиров}

procedure View_sort( x : mas ; l :integer);

var

y : mas;

t,t1 : mas1;

begin

t := x[2];

t1 := x[1];

sort(t,t1,l);

y[1] := t1;

y[2] := t;

Writeln('Упорядоченный вывод ');

View(y,l);

end;

{почтовый груз}

procedure Gruz( x : mas ; l :integer);

var

i, S : integer;

begin

S := 0;

For i := 1 to l do

begin

S := S + x[2,i] ;

end;

Writeln ('Всего ', l, ' пассажиров');

Writeln ('Общий вес багажа ', S);

Writeln ('Общий вес пассажиров ', ves * l);

Writeln ('Вес почтового груза ', N_max - S - ves *l);

ReadKey;

end;

{сортировка массивов}

procedure sort;

var

i,k,c : integer;

f : boolean;

begin

k := 0;

repeat

f := true;

for i := 0 to count-k-2 do

begin

if x[i] > x[i+1] then

begin

c := x[i]; x[i] := x[i+1]; x[i+1] := c;

c := y[i]; y[i] := y[i+1]; y[i+1] := c;

f := false

end;

end;

inc(k);

until f;

end;

end.

Program Lab_Rab_6_4;

Uses Crt, Work ;

Const N_max = 30000; {максимальная грузоподъемность самолета}

N = 300; {максимальное количество пассажиров}

Ves = 50; {условный вес пассажира}

Type

mas1 = array [1..N] of integer;

mas = array [1..2] of mas1;

var

Ch : integer ; {пункт меню}

A : mas;

Count : integer;

Begin

Count := 0;

Repeat

ClrScr;

Writeln('1 - Регистрация пассажиров ');

Writeln('2 - Просмотр пассажиров ');

Writeln('3 - Отсортированный вывод ');

Writeln('4 - Почтовый груз ');

Writeln('5 - Выход ');

Writeln;

Write('Введите № пункта меню - ');

ReadLn(Ch);

ClrScr;

Case ch of

1 : Create (A,Count);

2 : View(A,Count);

until Ch=5;

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]