Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая на Pascal.http://vk.com/pomoshtulgu.doc
Скачиваний:
27
Добавлен:
10.05.2015
Размер:
473.6 Кб
Скачать

3.5 Разработка структуры алгоритма решения задачи

Изначально, стоит рассмотреть, как будет осуществляться ввод размера матрицы и заполнение ее элементов, и их последующая проверка ввода. Размер вводится через переменную целочисленного типа, проверка осуществляется с помощью функции val. Иначе дело обстоит для значений матрицы. Для правильного ввода этих значений необходимо и достаточно использовать циклы с изначально заданным числом итераций, а ячейки в матрице должны быть вещественного типа для создания массовости программы. Ниже составлена схема алгоритма, вычисляющего среднее арифметическое значение элементов матрицы, расположенных слева и справа от двух диагоналей (рис. 13 и рис.14).

24

1

Программа для вычисления среднего арифметического значения элементов матрицы, расположенных слева и справа от двух диагоналей

2

12

3

5

4

6

9

Sum:=0;

n:=0;

8

j:=L..L div 2+2

i:=j+1 to L-j

10

Sum1:=Sum1+W[i,j]

n:=n+1;

11

18

17

16

15

14

13

нет

да

да

Рисунок 13 – Ввод размера матрицы и значений ее элементов, поиск суммы элементов, находящихся слева от двух диагоналей

25

19

20

21

22

24

18

23

j:=L..L div 2+2

i:=j-1..L-j+2

Sum2:=Sum2+W[i,j]

n:=n+1;

нет

да

Sred:=(Sum2+Sum1)/n

25

26

Рисунок. 14 – Поиск элементов, расположенных справа от двух диагоналей, вычисление среднего значения элементов, расположенных слева и справа от главных диагоналей и последующий вывод этих значений.

26

3.6 Текст программы на языке программирования Turbo Pascal 7.0

Далее текст программы FortMinor на языке программирования IDE Borland Turbo Pascal 7.0, выполняющий вычисление среднего значения элементов, находящихся слева и справа от двух диагоналей.

Program FortMinor;

Const F=30;

uses crt;

var

i,j,L,n,pr: integer;

Sum,Sum1,Sum2,Sred: real;

W: array [1..F,1..F] of real;

str1:string;

begin

clrscr;

begin

repeat

Write ('Введите размер матрицы W, W<’,F);

Readln (str1);

val(str1,L,pr);

if pr<>0 then

writeln('Введено неверное значение. Повторите ввод.');

until pr=0;

end;

L:=odd(L);

For i:=1 to L do

for j:=1 to L do

begin

repeat

Write ('‚Введите элемент W[',i,',',j,']: ');

Readln(str1);

val(str1,W[i,j],pr);

if pr<>0 then

writeln('Введено неверное значение. Повторите ввод.');

until pr=0;

end;

writeln('Введеная матрица :');

For i:=1 to L do

begin

for j:=1 to L do

begin

Write (W[i,j]:4:1);

end;

writeln;

end;

Sum:=0;

n:=0;

For j:=1 to L div 2 do

for i:=j+1 to L-j do

begin

Sum1:=Sum1+W[i,j];

n:=n+1;

end;

For j:=L downto L div 2+2 do

for i:=j-1 downto L-j+2 do

begin

Sum2:=Sum2+W[i,j];

n:=n+1;

end;

Sum:=Sum1+Sum2;

if n>0 then

begin

Sred:=Sum/n;

writeln('Среднее арифметическое значение элементов матрицы W, ');

writeln(' расположенных слева и справа от диагоналей =', Sred:7:3);

end

else

begin

writeln (' Элементов, расположенных слева и справа от диагоналей матрицы W нет...');

Writeln;

Readln

end;

end.

27