aluka
?>

Составить программу на языке паскаль. дана целочисленная прямоугольная матрица. найти количество строк, среднее арифметическое элементов которых меньше заданной величины. ( оформить в виде функции

Информатика

Ответы

gigbes
Решение приложено.
Компилятор: PascalABC.NET 3.0, сборка 1064
Составить программу на языке паскаль. дана целочисленная прямоугольная матрица. найти количество стр
angelina-uj1350
// PascalABC.Net 3.0, сборка 1064
// "Классическое" решение
const
  nn=20;

type
  SqMatrix=array[1..nn,1..nn] of integer;

function AvgRow(row,cols:integer; a:SqMatrix):double;
var
  j,s:integer;
begin
  s:=0;
  for j:=1 to cols do s:=s+a[row,j];
  AvgRow:=s/cols
end;

var
  i,j,n,k:integer;
  cavg:double;
  M:SqMatrix;
 
begin
  Write('Количество строк (столбцов) в матрице: '); Read(n);
  Write('Ограничение для среднего арифметического: '); Read(cavg);
  Randomize;
  // Инициализация и вывод исходной матрицы
  Writeln('*** Сгенерированная матрица ***');
  for i:=1 to n do begin
    for j:=1 to n do begin
      M[i,j]:=Random(51)-20;
      Write(M[i,j]:4)
    end;
    Writeln
  end;
  // Собственно, решение задачи
  k:=0;
  for i:=1 to n do
    if AvgRow(i,n,M)<cavg then Inc(k);
  Writeln('Количество отобранных строк равно ',k)
end.

Тестовое решение:
Количество строк (столбцов) в матрице: 10
Ограничение для среднего арифметического: 2
*** Сгенерированная матрица ***
  -5  10  29  25  23   0 -17   5 -19  -4
   4 -10  -4  13   3 -15  17  16  -4 -18
  -6  24  -4  19 -16 -15  11  -4  14  -3
  -7  -5 -10  -2 -17  19 -16  -2   4 -10
  26  25  29  -8  27  20  13 -10  -9   9
  -3 -11  18 -12   0   2  -7 -10  20  17
  19  18  22  14 -18 -11 -20  28   9  15
 -19  -1  -9 -15 -13  -1  25 -16  22  -5
   3   1 -16 -16 -20 -17   8 -18  28  12
   5  24   8  18   2 -12 -17  -6 -11  18
Количество отобранных строк равно 5

Второе решение дано для демонстрации возможностей современного Паскаля. Оно не подходит в качестве ответа в той части, что не использует отдельную функцию для нахождения среднего. По лаконичности записи оно вполне может соперничать с постепенно набирающим популярность языком, как Python

// PascalABC.Net 3.0, сборка 1064
// Решение, использующее возможности версии 3.0

var
  n: integer;
  cavg: double;
  M: array of array of integer;

begin
  Write('Количество строк (столбцов) в матрице: '); Read(n);
  Write('Ограничение для среднего арифметического: '); Read(cavg);
  // Инициализация и вывод исходной матрицы
  Writeln('*** Сгенерированная матрица ***');
  SetLength(M, n);
  for var i := 0 to n - 1 do
    begin M[i] := ArrRandom(n, -25, 25); M[i].Println end;
  // Собственно, решение задачи
  var k:=M.Select(x->x.Average < cavg).Count(x->x=True);
  Writeln('Количество отобранных строк равно ', k)
end.

Тестовое решение:
Количество строк (столбцов) в матрице: 10
Ограничение для среднего арифметического: 2
*** Сгенерированная матрица ***
-23 -13 13 20 20 -6 22 9 15 -12
8 12 20 -12 -10 16 -1 10 13 1
17 -16 -8 20 1 24 9 -8 4 15
12 7 -9 21 13 11 15 -25 -10 -24
1 3 16 15 -3 -17 23 -12 -15 4
8 -2 10 -17 23 19 20 19 -7 21
11 5 -21 25 1 -24 -4 24 0 5
-24 -1 -6 12 -25 -11 -6 2 -2 -7
-25 -5 -19 -25 -18 -11 23 -18 24 20
16 22 7 -6 -10 22 -2 16 -12 -4
Количество отобранных строк равно 4
isaev

Начнем с того, что даже если вам каким-то образом удастся получить IP адрес пользователя вк, то это вам ровным счетом ничего не даст. В лучшем случае вы узнаете город, в котором находится этот человек и больше ничего. И это только в том случае, если этот субъект не использовал средства анонимизации. Как мы видим, в большинстве случаев у людей возникают проблемы достаточно серьезного характера: кого то шантажируют, на кого то клевещут, рас ложные сведения и т.д. В большинстве случаев злоумышленник перестраховывается и использует средства анонимизации. Поэтому полученный IP адрес вполне вероятно окажется IP адресом какого-нибудь анонимайзера или впн сервиса.

v-shevlyakov7992

Переводим третий байт IP и адреса сети в двоичную систему

50 - 110010

48 - 110000

Так как это байт (а в байте 8 бит), допишем два незначащих нуля к получившимся числам:

00110010 - IP

00110000 - адрес сети

Адрес сети получается с применения поразрядной конъюнкции к маске и IP, проще говоря, при перемножении разрядов маски и IP-адреса. И в маске всегда сначала идут только единицы, а потом только нули. То есть можно записать так:

- маска

00110010 - IP

00110000 - адрес сети

где иксы в маске и цифры в IP-адресе - множители, а разряды адреса сети - произведение.

На 3 и 4 месте в маске однозначно должны быть единицы, т.к. если там будут нули, то и в адресе сети будут нули. Плюс к этому, в маске всегда сначала идут только единицы, а потом только нули, то есть можно записать так:

1111 - маска

00110010 - IP

00110000 - адрес сети

Второй справа разряд IP-адреса - единица, а адреса сети - ноль, значит в маске может быть только ноль:

1111хх00 - маска

00110010 - IP

00110000 - адрес сети

Оставшиеся два икса могут быть и единицами, и нулями. Нужно наименьшее возможное значение, значит поставим на их место нули:

11110000 - маска

00110010 - IP

00110000 - адрес сети

То есть третий байт маски 11110000, переведём в десятичную - получим 240.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Составить программу на языке паскаль. дана целочисленная прямоугольная матрица. найти количество строк, среднее арифметическое элементов которых меньше заданной величины. ( оформить в виде функции
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

dzo-dzo
Batishcheva
alyonafialka
eshabunina
Кислинская1055
pbttehnology
kolyabelousow4059
andrewshilin1334
uglichdeti
BrezhnevaKoidula
turoverova5
school24mir23
whitewhit90
luxoutlet
Леонтьева