Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сМОЛЬСКАЯ кУРСАВАЯ.docx
Скачиваний:
13
Добавлен:
22.02.2016
Размер:
644.65 Кб
Скачать
  1. Исходные данные

Количество регионов - 5

Таблица перевозок грузов (в тоннах) между отдельными регионами

900 310 180 570 850

405 300 770 345 210

980 870 570 170 220

380 250 670 540 440

700 500 350 280 150

Названия регионов:

Гомель

Жлобин

Осиповичи

Минск

Вильнюс

Данная таблица перевозок грузов создана с помощью программы ОС Windows «Блокнот», сохранена под именем «матрица». Используется для расчетов в 3-х приложениях: табличного процессора MS Excel, пакета автоматизации математических и инженерных расчетов MathCAD и среды программирования Pascal ABC.

  1. Решение задачи средcтвами Pascal

    1. Отладочный пример и отображение в ячейках памяти

Исходные данные:

8 1 3

5 2 4

6 7 4

3.2 Алгоритм решения задачи

Общая блок-схема решения задачи, представленная ниже, представляет собой совокупность из четырех основных процедур : процедура считывания городов (Read_Gor), процедура чтения данных из файла (Read_Tab1), процедура вывода данных в файл (Zap_File), и процедур: нахождение суммы по столбцам (Stolbci) и строкам(Stroki), процедуру по поиску минимального значения из суммы по строкам (сумма вывозимого груза) - (Max_perevozka), процедура увеличения количества груза, вывозимого с данного региона на любой другой (Uvelich), а так же функция по подсчету суммы на главной диагонали (перевозки в местном сообщении) – (Mest_Soob).

3.3 Блок-схемы

Блок-схема алгоритма процедуры считывания Блок-схема алгоритма процедуры

городов из файла считывания из файла таблицы

Блок-схема алгоритма процедуры сумма Блок-схема алгоритма процедуры сумма

перевозок по строкам перевозок по столбцам и общая сумма

перевозок

Блок-схема алгоритма процедуры сумма количества груза в местном сообщении (главная диагональ)

Блок-схема алгоритма процедуры определение региона максимальной перевозки

Блок-схема алгоритма процедуры увеличение размеров отправления по региону

Блок-схема алгоритма процедуры вывод массива

Блок-схема алгоритма основной программы

3.4 Программа решения задачи на языке Pascal

Program Kursavaya_Smolskaya;

Var a: array [1..100,1..100] of real;

b,c: array [1..100] of real;

stan: array [1..100] of string;

i,j,imax,N: integer;

proz,obsch,max,s: real;

stan1,stan2: string;

f,f1,f2: text;

//{Процедуры считывания из файла данных}//

{Процедура считывания городов из файла}

Procedure Read_Gor;

Begin

Assign(f1,'D:города.txt');

reset(f1);

For i:=1 to N do

readln(f1,stan[i]);

close(f1);

end;

{Процедура считывания из файла таблицы}

Procedure Read_Tabl;

Begin

Assign(f2,'D:матрица.txt');

reset(f2);

For i:=1 to N do

Begin

For j:=1 to N do

read(f2,a[i,j]);

end;

close(f2);

end;

{Сумма перевозок по строкам}

Procedure Stroki;

begin

for i:=1 to N do

b[i]:=0;

For i:=1 to N do

begin

for j:=1 to N do

b[i]:=b[i]+a[i,j];

end;

end;

{Сумма перевозок по столбцам и общая сумма перевозок}

Procedure Stolbci;

begin

for j:=1 to N do

c[j]:=0;

obsch:=0;

For j:=1 to N do

begin

for i:=1 to N do

c[j]:=c[j]+a[i,j];

obsch:=obsch+c[j];

end;

end;

{Сумма количества грузов в местном сообщении (главная диагональ)}

Procedure Mest_Soob;

begin

s:=0;

For i:=1 to N do

for j:=1 to N do

if (i=j) then

s:=s+a[i,j];

end;

{Определение региона максимальной перевозки}

Procedure Max perevozka;

begin

max:=a[1,2];

stan1:=stan[2];

stan2:=stan[2];

For i:=1 to N do

for j:=1 to N do

begin

if (i=j) and (a[i,j]>=max) then

begin

max:=a[i,j];

stan1:=stan[i];

stan2:=stan[j];

imax:=i;

end;

end;

end;

{Увеличение размеров отправления по региону}

Procedure Uvelich;

begin

proz:=proz/100;

For j:=1 to N do

begin

For i:=1 to N do

if (i=imax) then a[i,j]:=a[i,j]+a[i,j]*proz;

end;

//{Вывод массива}

Procedure Vivod;

begin

//Вывод в строку «из \ на», последовательность городов и «итого»

write('из \ на':16);

For i:=1 to N do

begin

write(g[i]:16);

end;

write('Итого':16);

writeln;

//Вывод в столбец последовательность городов и заполнение матрицы

For i:=1 to N do

begin

write(g[i]:16);

for j:=1 to N do

write(a[i,j]:16:1);

write(b[i]:16:1);

writeln;

//Вывод «итого» и сумм по столбцам

write('Итого':16);

For j:=1 to N do

begin

write(c[j]:16:1);

end;

write(obsch:16:1);

writeln;

//{Процедуры записи в файл таблицы}//

Procedure Zap_File;

begin

//Рисование черточки

For j:=1 to N+2 do

write(f,'_________________');

writeln(f);

//Вывод в строку "из \ на", последовательность городов и "итого"

write(f,'|');

write(f,'из \ на':16);

write(f,'|');

For i:=1 to N do

begin

write(f,stan[i]:16);

write(f,'|');

end;

write(f,'Итого':16);

write(f,'|');

writeln(f);

//Рисование черточки

For j:=1 to N+2 do

write(f,'|________________');

write(f,'|');

writeln(f);

//Вывод в столбец последовательность городов и заполнение матрицы

For i:=1 to N do

begin

write(f,'|');

write(f,stan[i]:16);

write(f,'|');

for j:=1 to N do

write(f,a[i,j]:16:2,'|');

write(f,b[i]:16:2);

write(f,'|');

writeln(f);

//Рисование черточки после каждой строчки

begin

For j:=1 to N+2 do

write(f,'|________________');

write(f,'|');

writeln(f);

end;

end;

write(f,'|');

//Вывод "итого" и сумм по столбцам

write(f,'Итого':16);

write(f,'|');

For j:=1 to N do

begin

write(f,c[j]:16:2);

write(f,'|');

end;

write(f,obsch:16:0);

write(f,'|');

writeln(f);

//Рисование черточки

For j:=1 to N+2 do

write(f,'|________________');

write(f,'|');

writeln(f);

writeln(f);

writeln(f);

end;

//главная программа//

Begin

Writeln('Введите количество регионов (не более 7):');

Readln(N);

Read_Gor;

Read_Tabl;

Stolbci; {Суммы по столбцам}

Stroki; {Суммы по строкам}

Assign(f,'D:результаты.txt'); {Открываем файл}

rewrite(f); {Очищаем для записи}

writeln(f,'Таблица перевозок');

Zap_File;

Mest_Soob; {Сумма перевозок местного сообщения}

writeln(f,'Сумма количества грузов в местном сообщении = ',s);

Mtr2; {Нахождение региона с макс-й перевозкой}

writeln(f,'Максимальная перевозка ',max,' между регионами ',stan1, ' и ',stan2);

writeln('Введите %, на который необходимо увеличить количество груза, ввозимого с любого региона на данный=');

readln(proz);

Uvelich; {Увеличение кол-ва перевозок по найденному региону}

writeln(f,'Изменённая таблица перевозок:');

writeln;

Stolbci; {Пересчёт сумм по столбцам}

Stroki; {Пересчёт сумм по строкам}

Zap_File;

close(f);

End.