
- •Расчетное задание по информатике. Вариант 8.
- •1. Внешняя спецификация программы
- •2. Проект алгоритма основной программы.
- •3. Внутренняя спецификация сегментов. Внутренняя спецификация сегмента 1.
- •3.1.2 Состав данных:
- •3.2.2. Состав данных:
- •3.3.2. Состав данных
- •4.Проекты алгоритмов сегментов.
- •5. Паскаль-программы.
- •5.1.Паскаль-программа блочной структуры.
- •5.2. Паскаль-программа модульной структуры.
- •6. Отладка программ
- •6.1 Отладка программы блочной структуры
- •6.2 Отладка программы модульной структуры
- •7. Рекомендации по использованию программы.
3.3.2. Состав данных
-
Тип
Имя
Смысл
Структура
Входные данные
Цел
A
Заданная матрица
Массив двумерный
переменной длины
Цел
N
Количество строк/столбцов
Простая переменная
Выходные данные
Вещ
Sum
Сумма элементов
Простая переменная
Промежуточные данные
Цел
I
Номер строки
Простая переменная
Цел
J
Номер столбца
Простая переменная
3.3.3. Спецификация сегмента 1.3 Подзадача представлена в Turbo Pascal как функция, поскольку она имеет один выходной параметр
Имя функции: sum(А).
3.3.4. Аномалии. Аномалии сегмента 3 не анализируются.
4.Проекты алгоритмов сегментов.
4.1. Вспомогательный алгоритм сегмента 1.
Начало
c[2]:=0
c[3]:=0
c[4]:=0
c[1]:=0
Задать:{A},N
FL:=истина


LG:=ложь
I:=1
LG
J:=I+1
A(I,J)≠ A(J,I)
FL:=ложь
c[1]:=c[1]+1
LG:=ложь
c[2]:=c[2]+1
c[2]:=c[2]+1
J:=J+1
(J>N)˅(-LG)
Конец
i:=i+1
c[4]:=c[4]+1
I>N-1
LG:=ложь
c[3]:=c[3]+1

Передать: FL
4.2.Вспомогательный алгоритм сегмента 2.
Начало
Задать:{A},N
c[5]:=0
I:=1
J:=I+1
J>N
I:=I+1


c[5]:=c[5]+1
A(I,J):=0
J:=j+1
нет
да
I>N-1
нет
да
Передать: {A}
Конец
4.3. Вспомогательный алгоритм сегмента 3
Начало
Задать:{A},N
sum:=0
I>N
J:=J+1
J:=1

I:=J+1
sum:=sum+ A(I,J)
c[6]:=c[6]+1
c[6]:=0
J:=J+1
нет
да
J>N-1
нет
да
Передать: sum
Конец
5. Паскаль-программы.
5.1.Паскаль-программа блочной структуры.
PROGRAM TR_v8;
CONST k=5;
TYPE mas=array[1..k,1..k] of integer;
VAR A:mas;
I,J:integer;
t1,t2:text;
Function sym(var A:mas;N:integer):boolean;
Var I,J:integer;
FL,LG:Boolean;
Begin
FL:=True;
LG:=True;
I:=1;
While LG do
Begin
J:=I+1;
Repeat
IF A[J,I]<>A[I,J] then
Begin
FL:=False;
LG:=False;
End;
J:=J+1;
Until (J>N)OR(not LG);
I:=I+1;
IF I>(N-1) then
LG:=False;
End;
sym:=FL;
End;
PROCEDURE zero(var A:mas; N:integer);
Var I,J:integer;
Begin
for I:= 1 to (N-1) do
for J:=(I+1) to N do A[I,J]:=0;
end;
Function sum(var A:mas; N:integer):integer;
Var I,J:integer;
Begin
sum:=0;
for J:=1 to (N-1) do
for I:=(1+J) to N do
sum:=sum+A[I,J];
End;
BEGIN
assign(t1,'isdan1.pas');
assign(t2,'vdan1.pas');
reset(t1);
rewrite(t2);
for i:=1 to k do
begin
for j:=1 to k do
begin
read(t1,A[I,J]);
read(t1);
end;
readln(t1);
End;
writeln(t2,' ':35,'Результаты');
if sym(A,k) then
begin
zero(A,k);
writeln(t2,' ':30,'S= ',sum(A,k));
end
else
writeln(t2,' ':25, 'Матрица не симметрична');
close(t1);
close(t2);
END.