Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая_оформление.docx
Скачиваний:
13
Добавлен:
22.02.2016
Размер:
108.01 Кб
Скачать
    1. Текст программы

Program perevozki;

const N=9;

type mas=array [1..20,1..20] of real;

vect=array [1..20] of real;

reg=array [1..50] of string;

var A:mas;

p:reg;

inp,outp:text;

i,j,o:integer; bo: array [1..20] of byte;

sum_stolb,sum_mestnyh,s,sum_str:real;

str,stolb,V:vect; vyv: boolean;

label m1,m2;

{Процедура заполнения массива p}

procedure zap_p;

begin

p[1]:='Краматорск';

p[2]:='Донецк';

p[3]:='Углегорск';

p[4]:='Дружковка';

p[5]:='Мариуполь';

p[6]:='Алчевск';

p[7]:='Горловка';

p[8]:='Макеевка';

p[9]:='Дебальцево';

p[10]:='Итого';

end;

{Процедура вывода матрицы на экран}

procedure vivod_1(N:integer;A:mas);

var i,j,k:integer;

label m1,m2;

begin

if vyv=true then o:=n else o:=n+1;

write(' из/в |');

for j:=1 to o do

begin

write(p[j]:10);

write(' |');

end;

writeln;

for i:=1 to (13*o+4) do

write('-');

writeln;

for i:=1 to n do

begin

write(p[bo[i]]:10);

write(' |');

begin

for j:=1 to n do

begin

write(A[i,j]:10:2);

write(' |');

end;

if vyv=true then goto m1;

Write(str[i]:10:2,' |');

m1: writeln;

for k:=1 to (13*o+4) do

write('-');

writeln;

end;

end;

if vyv=true then goto m2;

Write(p[n+1]:10,' |');

for i:=1 to n do Write(stolb[i]:10:2,' |');

Writeln;

for k:=1 to (13*o+4) do write('-');

writeln;

m2: end;

{Процедура вывода промежуточных данных и результирующей матрицы в файл}

procedure vivod_2(N:integer;A:mas);

var i,j,k:integer;

outp:text;

begin

assign(outp,'out.txt');

append(outp);

Writeln(outp, 'Производим сортировку объёмов вывоза груза в порядке убывания.');

writeln(outp, 'Результирующая таблица перевозок по Донецкому отделению');

writeln(outp);

write(outp,' из/в |');

for j:=1 to n do

begin

write(outp,p[j]:10);

write(outp,' |');

end;

writeln(outp);

for i:=1 to (13*n+4) do

write(outp,'-');

writeln(outp);

for i:=1 to n do

begin

write(outp,p[bo[i]]:10);

write(outp,' |');

begin

for j:=1 to n do

begin

write(outp,A[i,j]:10:2);

write(outp,' |');

end;

writeln(outp);

for k:=1 to (13*n+4) do

write(outp,'-');

writeln(outp);

end;

end;

writeln(outp,'Сумма количества грузов, перевозимых в местном сообщении по всем регионам, равна ',sum_mestnyh,'.');

writeln(outp);

close(outp);

end;

{Процедура вывода исходной матрицы перевозок в файл}

procedure vivod_3(N:integer;A:mas);

var i,j,k:integer;

outp:text;

begin

assign(outp,'out.txt');

rewrite(outp);

writeln(outp, 'Курсовая работа студента гр. УК-21 Козловского Николая');

writeln(outp);

writeln(outp, 'Исходная таблица перевозок по Донецкому отделению');

writeln(outp);

write(outp,' из/в |');

for j:=1 to (n+1) do

begin

write(outp,p[j]:10);

write(outp,' |');

end;

writeln(outp);

for i:=1 to (13*n+16) do

write(outp,'-');

writeln(outp);

for i:=1 to n do

begin

write(outp,p[i]:10);

write(outp,' |');

begin

for j:=1 to n do

begin

write(outp,A[i,j]:10:2);

write(outp,' |');

end;

Write(outp,str[i]:10:2);

writeln(outp,' |');

for k:=1 to (13*n+16) do

write(outp,'-');

writeln(outp);

end;

end;

Write(outp,p[n+1]:10,' |');

for i:=1 to n do Write(outp,stolb[i]:10:2,' |');

Writeln(outp);

for k:=1 to (13*n+16) do write(outp,'-');

writeln(outp);

writeln(outp);

close(outp);

end;

{Процедура сортировки объёмов вывоза груза в порядке убывания}

Procedure sort(N:integer;str:vect);

Var i,j: byte; c:real; po:vect; pr: boolean; b:mas;

begin

for i:=1 to n do po[i]:=str[i];

repeat

pr:=false;

for i:=1 to (n-1) do if str[i+1]>str[i] then begin

c:=str[i];

str[i]:=str[i+1];

str[i+1]:=c;

pr:=true;

end;

until not pr;

for i:=1 to n do for j:=1 to n do if str[i]=po[j] then bo[i]:=j;

for i:=1 to n do for j:=1 to n do b[i,j]:=a[i,j];

for i:=1 to n do for j:=1 to n do a[i,j]:=b[bo[i],j];

end;

{Основная программа}

BEGIN

writeln('Курсовая работа студента гр. УК-21 Козловского Николая');

for i:=1 to n do bo[i]:=i;

{Заполнение массива с названиями регионов}

zap_p;

{Исходная матрица перевозок}

writeln;

assign(inp,'in.txt');

reset(inp);

for i:=1 to n do

begin

for j:=1 to n do read(inp,A[i,j]);

Writeln;

end;

close(inp);

{Нахождение итогов по строкам}

for i:=1 to n do

begin

sum_str:=0;

for j:=1 to n do

sum_str:=sum_str+A[i,j];

str[i]:=sum_str;

end;

{Нахождение итогов по столбцам}

for j:=1 to n do

begin

sum_stolb:=0;

for i:=1 to n do

sum_stolb:=sum_stolb+A[i,j];

stolb[j]:=sum_stolb;

end;

{Вывод исходной матрицы на экран}

writeln('Исходная таблица перевозок по Донецкому отделению');

writeln;

vivod_1(N,A);

writeln;

{Нахождение суммы количества грузов, перевозимых в местном сообщении по всем регионам}

sum_mestnyh:=0;

for i:=1 to n do

sum_mestnyh:=sum_mestnyh+A[i,i];

vivod_3(N,A);

{Вывод суммы количества грузов, перевозимых в местном сообщении по всем регионам}

writeln('Сумма количества грузов, перевозимых в местном сообщении по всем регионам, равна ',sum_mestnyh,'.');

writeln;

{Производим сортировку объёмов вывоза грузов}

sort(N,str);

Writeln(' Производим сортировку объёмов вывоза груза в порядке убывания.');

{Результирующая матрица перевозок}

writeln('Результирующая таблица перевозок');

writeln;

vyv:=true;

vivod_1(N,A);

{Вывод результатов в файл}

vivod_2(N,A);

END.