
- •На тему:
- •Введение
- •Постановка задачи
- •Исходные данные
- •Решение задачи управления процессами перевозок в среде Pascal
- •Алгоритм решения задачи
- •Текст программы
- •Результаты работы программы
- •Решение задач средствамиMs Exel
- •Исходные данные и итоги по строкам и столбцам
- •Расчёты по заданию
- •Решение задачи средствами mathcad
- •Список литературы
Текст программы
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.