Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program matrix1;
- // Программа считает колличество нулевых
- // элементов матри8цы A ограниченных
- // единичными.
- // Автор Ремень И.В.(ИУ7-12)
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- const
- Size = 8;
- var
- I, J: Integer; { Переменные цикла }
- Num: Integer; { Переменная результата }
- Reading: Boolean; { True - считывать }
- StartFrom, StopAt: Integer; { Начало и конец цикла }
- term: array[1..8] of Integer; { Колличество прерывающих последовательностей }
- k: Integer; { Временная переменная }
- // Выходная матрица
- A: array[1..Size, 1..Size] of Integer =
- ((0, 1, 1, 1, 0, 1, 1, 1),
- (0, 1, 0, 1, 0, 1, 0, 1),
- (0, 1, 0, 1, 0, 1, 0, 1),
- (0, 1, 0, 1, 1, 1, 0, 1),
- (0, 1, 0, 0, 0, 0, 0, 1),
- (0, 1, 0, 1, 1, 1, 0, 1),
- (0, 1, 1, 1, 0, 1, 1, 1),
- (0, 0, 0, 0, 0, 0, 0, 0));
- begin
- // Инициализация значений
- Num := 0;
- Reading := false;
- StartFrom := -1;
- StopAt := -1;
- for I := 1 to Size do
- Term[i] := 0;
- // Рассчет начала и конца главного цикла
- for I := 1 to Size do
- begin
- for J := 1 to Size do
- begin
- if (a[i,j] = 1) and (StartFrom = -1) then
- StartFrom := i;
- if a[i,j] = 1 then
- begin
- StopAt := i;
- continue;
- end;
- end;
- end;
- StopAt := StopAt - 1;
- StartFrom := StartFrom + 1;
- //Рассчет колличества терминирующих последовательностей
- for I := 1 to Size do
- for J := 1 to Size do
- if (A[I,J] = 1) and (A[I,J+1]=0) then
- Term[i] := Term[i] + 1;
- //Вывод матрицы A
- WriteLn('Матрица A:');
- for I := 1 to Size do
- begin
- for J := 1 to Size do
- Write(A[I, J]:3);
- WriteLn;
- end;
- WriteLn;
- // Выволнение подсчета нулевых элементов между единичными
- for I := StartFrom to StopAt do
- begin
- K := 0;
- Reading := False;
- for J := 1 to Size - 1 do
- begin
- if (A[I, J] = 0) and (Reading = True) then
- begin
- Num := Num + 1;
- A[i,j] := 2;
- end;
- if (A[I, J] = 1) and (Reading = False) and (A[I, J+1] = 0) then
- begin
- Reading := True;
- K := K + 1;
- end
- else
- begin
- if (A[I, J] = 1) and (Reading = True) and (A[I, J+1] = 0) then
- begin
- Reading := False;
- K := K + 1;
- end;
- if (A[I, J] = 1) and (Reading = False) and (A[I, J+1] = 0) and (K = 2)
- and (term[i] = 3) then
- Reading := True;
- end;
- end;
- end;
- //Вывод матрицы A
- WriteLn('Матрица A:');
- for I := 1 to Size do
- begin
- for J := 1 to Size do
- Write(A[I, J]:3);
- WriteLn;
- end;
- WriteLn;
- WriteLn('Огорожено единицами ', Num, ' нулевых элементов');
- ReadLn;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement