Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.32 KB | None | 0 0
  1. program matrix1;
  2. // Программа считает колличество нулевых
  3. // элементов матри8цы A ограниченных
  4. // единичными.
  5. // Автор Ремень И.В.(ИУ7-12)
  6.  
  7. {$APPTYPE CONSOLE}
  8.  
  9. uses
  10.   SysUtils;
  11.  
  12. const
  13.   Size = 8;
  14.  
  15. var
  16.   I, J: Integer;                { Переменные цикла                            }
  17.   Num: Integer;                 { Переменная результата                       }
  18.   Reading: Boolean;             { True - считывать                            }
  19.   StartFrom, StopAt: Integer;   { Начало и конец цикла                        }
  20.   term: array[1..8] of Integer; { Колличество прерывающих последовательностей }
  21.   k: Integer;                   { Временная переменная                        }
  22.  
  23.   // Выходная матрица
  24.   A: array[1..Size, 1..Size] of Integer =
  25.   ((0, 1, 1, 1, 0, 1, 1, 1),
  26.    (0, 1, 0, 1, 0, 1, 0, 1),
  27.    (0, 1, 0, 1, 0, 1, 0, 1),
  28.    (0, 1, 0, 1, 1, 1, 0, 1),
  29.    (0, 1, 0, 0, 0, 0, 0, 1),
  30.    (0, 1, 0, 1, 1, 1, 0, 1),
  31.    (0, 1, 1, 1, 0, 1, 1, 1),
  32.    (0, 0, 0, 0, 0, 0, 0, 0));
  33.  
  34. begin
  35.   // Инициализация значений
  36.   Num := 0;
  37.   Reading := false;
  38.   StartFrom := -1;
  39.   StopAt := -1;
  40.   for I := 1 to Size do
  41.     Term[i] := 0;
  42.  
  43.   // Рассчет начала и конца главного цикла
  44.   for I := 1 to Size do
  45.   begin
  46.     for J := 1 to Size do
  47.       begin
  48.         if (a[i,j] = 1) and (StartFrom = -1) then
  49.           StartFrom := i;
  50.         if a[i,j] = 1 then
  51.         begin
  52.           StopAt := i;
  53.           continue;
  54.         end;
  55.       end;
  56.   end;
  57.   StopAt := StopAt - 1;
  58.   StartFrom := StartFrom + 1;
  59.  
  60.   //Рассчет колличества терминирующих последовательностей
  61.   for I := 1 to Size do
  62.     for J := 1 to Size do
  63.       if (A[I,J] = 1) and (A[I,J+1]=0) then
  64.         Term[i] := Term[i] + 1;
  65.  
  66.   //Вывод матрицы A
  67.   WriteLn('Матрица A:');
  68.   for I := 1 to Size do
  69.   begin
  70.     for J := 1 to Size do
  71.       Write(A[I, J]:3);
  72.     WriteLn;
  73.   end;
  74.   WriteLn;
  75.  
  76.   // Выволнение подсчета нулевых элементов между единичными
  77.   for I := StartFrom to StopAt do
  78.   begin
  79.     K := 0;
  80.     Reading := False;
  81.     for J := 1 to Size - 1 do
  82.     begin
  83.       if (A[I, J] = 0) and (Reading = True) then
  84.       begin
  85.         Num := Num + 1;
  86.         A[i,j] := 2;
  87.       end;
  88.       if (A[I, J] = 1) and (Reading = False) and (A[I, J+1] = 0) then
  89.       begin
  90.         Reading := True;
  91.         K := K + 1;
  92.       end
  93.       else
  94.       begin
  95.         if (A[I, J] = 1) and (Reading = True) and (A[I, J+1] = 0) then
  96.         begin
  97.           Reading := False;
  98.           K := K + 1;
  99.         end;
  100.         if (A[I, J] = 1) and (Reading = False) and (A[I, J+1] = 0) and (K = 2)
  101.           and (term[i] = 3) then
  102.           Reading := True;
  103.       end;
  104.     end;
  105.   end;
  106.  
  107.     //Вывод матрицы A
  108.   WriteLn('Матрица A:');
  109.   for I := 1 to Size do
  110.   begin
  111.     for J := 1 to Size do
  112.       Write(A[I, J]:3);
  113.     WriteLn;
  114.   end;
  115.   WriteLn;
  116.  
  117.   WriteLn('Огорожено единицами ', Num, ' нулевых элементов');
  118.   ReadLn;
  119. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement