- •Содержание
- •Введение
- •Постановка задачи
- •Исходные данные
- •Решение задачи средcтвами Pascal
- •Отладочный пример и отображение в ячейках памяти
- •3.2 Алгоритм решения задачи
- •3.3 Блок-схемы
- •3.4 Программа решения задачи на языке Pascal
- •3.5Результаты решения задачи
- •Решение задачи средствами ms Excel
- •Исходные данные
- •Расчёты по заданию
- •Посчитанные данные
- •Диаграмма по результатам расчета
- •Заключение
- •Список литературы
Исходные данные
Количество регионов - 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.
Решение задачи средcтвами Pascal
Отладочный пример и отображение в ячейках памяти
Исходные данные:
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.