Применение программных комплексов для решения инженерных задач

–PAGE_BREAK–1.2 Программа решения задачи на языке Паскаль

Program perevozki;

uses crt;

const n=10;

Type Mas=array[1..n,1..n]of real;

Var i,j,k:byte;

S:real;

A:mas;

f1,f2:text;

sum_po_strokam:array[1..n] of real;

sum_po_stolscam:array[1..n] of real;

sum_po_stolscam_bez_MC:array[1..n] of real;

max:real;

jmax:byte;

imax:byte;

Reg:array[1..n] of string;
Procedure name;

begin

for i:=1 to n do

begin

Writeln(‘введите название i-региона ‘);

read(Reg[i]);

end;

end;

{ввод таблицы грузоперевозок в регионах РБ}

Procedure vvod(n:byte; var A:mas);

begin

reset(f1);

for i:=1 to n do

begin

for j:=1 to n do

read(f1,A[i,j]);

readln(f1);

end;

close(f1);

end;

{вывод таблицы грузоперевозок по пунктам в файл f2}

Procedure Vivodvfile(n:byte; A:Mas);

begin

writeln(f2,’ _________________________________________________________________’);

writeln(f2);

write(f2, ‘ ‘);

for i:=1 to n do

write(f2,Reg[i]:7,’ ‘);

writeln(f2);

writeln(f2,’ _________________________________________________________________’);

for i:=1 to n do

begin

write(f2, Reg[i]:12,’ ‘);

for j:=1 to n do

write(f2,A[i,j]:8:1);

writeln(f2);

end;

writeln(f2,’ _________________________________________________________________’);

writeln(f2);

end;

{вывод данной программы}

Procedure Schit (n:byte; A:Mas);

begin

write(‘ ‘);

for i:=1 to n do

write( reg[i]:10);

writeln;

writeln;

for i:=1 to n do

begin

write(reg[i]:10,’ !’) ;

for j:=1 to n do

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

write(‘ !’) ;

writeln;

writeln();

end;

end;

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

Function diag(n:byte; A:Mas):real;

var i,j:byte;s:real;

begin

s:=0;

for i:=1 to n do

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

diag:=s;

writeln(‘Cумма количества грузов, перевозимых в местном сообщении по всем регионам равна ‘, s);

writeln;

end;

{нахождение итогов по регионам вывоза грузов}

Procedure Sum_strok(n:byte;A:Mas);

begin

for j:=1 to n do

sum_po_strokam[i]:=0;

for j:=1 to n do

for i:=1 to n do

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

for i:=1 to n do

writeln(sum_po_strokam[j]:19:1);

writeln();

writeln(f2,’Итоги количества грузов прибыло из регионов’);

write(f2,’ ‘);

for j:=1 to n do

write(f2,Reg[j]:7,’/’);

writeln();

for j:=1 to n do

write(f2,sum_po_strokam[j]:8:1);

writeln(f2);

end;

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

Procedure Sum_stolbzov(n:byte;A:Mas);

begin

for i:=1 to n do

sum_po_stolscam[i]:=0;

for i:=1 to n do

for j:=1 to n do

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

for i:=1 to n do

writeln(sum_po_stolscam[i]:19:1);

writeln();

writeln(f2,’Итоги количества грузов отправленных в регионы ‘);

write(f2,’ ‘);

for i:=1 to n do

write(f2,Reg[i]:7,’/’);

writeln();

for i:=1 to n do

write(f2,sum_po_stolscam[i]:8:1);

writeln(f2);

end;

{Сумма столбцов без местного сообщения}

Procedure Sum_po_stolbcam_bez_MC(n:byte;A:mas);

Begin

for j:=1 to n do

sum_po_stolscam_bez_MC[j]:=sum_po_strokam[j]-A[j,j];

writeln(‘Сумма по столбцам таблицы без учета грузов, перевозимых в местном сообщении’);

for i:=1 to n do

writeln(reg[j]:18, ‘ ‘,sum_po_stolscam_bez_MC[j]:8:1);

writeln();

writeln(f2,’Итоги количества грузов прибывших из регионов’);

write(f2,’ ‘);

for j:=1 to n do

write(f2,Reg[j]:7,’/’);

writeln();

for j:=1 to n do

write(f2,sum_po_stolscam_bez_MC[j]:8:1);

writeln(f2);

end;

{нахождение регионов, между которыми установлена максимальная перевозка груза}

Procedure Max_perevozka(n:byte;A:mas);

begin

max:=sum_po_stolscam_bez_MC[1];

imax:=1;

for i:=1 to n do

if sum_po_stolscam_bez_MC[i]>max then

begin

max:=sum_po_stolscam_bez_MC[i];

imax:=i;

k:=imax;

end;

Writeln(‘в регионе’,’ ‘, Reg[imax],’ установлена минимальная перевозка, которая составляет’,’ ‘, max:5:0 ,’ ‘,’тонн’);

writeln(f2);

writeln(f2,’регионы, между которыми установлена минимальная перевозка груза — ‘,Reg[imax]);

writeln(f2);

end;

{по региону прибытия минимального груза, все размеры прибытия груза уменьшить на 10%}

Procedure Umengruz(n,k:byte; var A:mas);

begin

for i:=1 to n do

A[i,k]:=(A[i,k])*0.9;

Writeln(‘——————————————————————————‘);

writeln(‘Новый объём груза, прибывшего в регион, ‘,Reg[k],’ будет составлять’);

writeln;

end;

{главная программа}

begin

writeln(‘ к у р с о в а я р а б о т а в а р и а н т — 6 ‘);

Writeln;

Writeln(‘Индивидуальное задание:’);

Writeln(‘Определить регионы(исключая местное сообщение)между которыми установлена максимальная перевозка(корреспонденция)груза ‘);

Writeln(‘По региону, прибытия данного груза, все размеры прибытия уменьшить на 10%!’);

Writeln;

assign(f1,’D:\sazan.txt’);

assign(f2,’D:\sazan2.txt’);

{открытие файла для записи}

rewrite(f2);

name;

writeln(f2,’ Курсовая работа Сазановича К.В.’);

{вызов процедуры VVODзаполнения таблицы грузоперевозок в регионах РБ}

vvod(n,A);

{вызов процедуры Schitвывода таблицы грузоперевозок в регионах РБ}

writeln(‘ исходная таблица перевозок грузов’);

writeln;

Schit(n,A);

Writeln(f2, ‘ исходная таблица перевозок грузов’);

vivodvfile(n,A);

Writeln(f2);

Writeln(‘итоги по регионам прибытия грузов’);

Sum_strok(n,A);

Writeln(‘итоги по регионам вывоза грузов’);

Sum_stolbzov(n,A);

writeln(‘сумма количества грузов в местном сообщении по всем регионам ‘,diag(n,A),’ тонн’);

writeln(f2,’ ‘);

writeln(f2,’сумма количества грузов в местном сообщении по всем регионам ‘,diag(n,a),’тонн’);

{вызов процедуры Min_perevozka}

Sum_po_stolbcam_bez_MC(n,A);

Max_perevozka(n,A);

Umengruz(n,k,A);

Schit(n,A);

writeln(f2,’ Таблица грузоперевозок в регионах’);

writeln(f2,’ (таблица после корректировки объёмов прибытия грузов в пункт — ‘,Reg[k],’)’);

vivodvfile(n,A);

Writeln(‘Работу выполнил Сазановича К.В.’);

Writeln(f2, ‘Курсовую работу выполнил Сазановича К.В.’);

{закрытиефайлаf2}

close(f2); end.

1.3 Результаты решения задачи
Курсовая работа Сазановича К.В.

Исходная таблица перевозок грузов

Итоги количества грузов прибыло из регионов

Итоги количества грузов отправленных в регионы

сумма количества грузов в местном сообщении по всем регионам 445тонн

Итоги количества грузов прибывших из регионов

регионы, между которыми установлена минимальная перевозка груза — 9

Раздел 2. Решение задачи средствами Microsoft Excel
Исходная таблица

При помощи функции “СУММ(ячейка1: ячейка2)” мы высчитали суммы столбцов, суммы столбцов без местного сообщения и суммы строк. Таблица приведена ниже:

Таблица с формулами
При помощи функций “ИНДЕКС”, “ПОИСКПОЗ” и “МАКС” находим следующие значения в расчетах:

Таблица с формулами

После нахождения максимального региона уменьшаем максимальный столбец на 10% и получаем таблицу:

Таблица в формулах

При построении использовались гистограммы с группировкой, отображающие количество отправленного и принятого груза в каждом регионе до и после уменьшения грузопотока в регионе с максимальным местным сообщением.

    продолжение
–PAGE_BREAK–