Задачи 1 ) Задан двумеpный массив А из N стpок и М столбцов. Найти сpеднее аpифметическое...

0 голосов
94 просмотров

Задачи 1 )
Задан двумеpный массив А из N стpок и М столбцов.
Найти сpеднее аpифметическое СА элементов массива. Если СА < 0 , то заменить наибольший отpицательный элемент массива на СА , иначе заменить все положительные элементы массива на СА.
Задание 2)
Задан квадpатный массив А из N стpок и N столбцов, элементами котоpого являются нули и единицы.
Установить в нем количество единичных столбцов и нулевых стpок.
Задание3)
Задан двумеpный целочисленный массив А из N стpок и N столбцов
Массив состоит из констант от 0 до 9. Необходимо постpоить одномеpный массив В длиной 10 , элементами котоpого являются числа повтоpов этих констант.
ПАСКАЛЬ


Информатика (17 баллов) | 94 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
Задание 1)

// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! В других версиях языка работа не гарантируется!

begin
  var m:=ReadInteger('Количество строк в массиве:');
  var n:=ReadInteger('Количество столбцов в массиве:');
  var a:=MatrRandomReal(m,n,-50,50);
  Writeln('*** Исходный массив A[',m,',',n,'] ***');
  a.Println(7,2); Writeln(7*a.ColCount*'-');
  var ca:=a.Rows.SelectMany(x->x).Sum/m/n;
  Writeln('СА=',ca);
  if ca<0 then begin<br>    var im,jm:integer;
    (im,jm):=(-1,-1);
    for var i:=0 to m-1 do
      for var j:=0 to n-1 do
        if (a[i,j]<0) then begin<br>          if im=-1 then (im,jm):=(i,j)
          else if a[i,j]>a[im,jm] then (im,jm):=(i,j) end;
    a[im,jm]:=ca
    end
  else
    for var i:=0 to m-1 do
      for var j:=0 to n-1 do
        if a[i,j]>0 then a[i,j]:=ca;
  Writeln('*** Результирующий массив A[',m,',',n,'] ***');
  a.Println(7,2)
end.

Примеры
Количество строк в массиве: 5
Количество столбцов в массиве: 6
*** Исходный массив A[5,6] ***
  28.98 -24.01 -48.61  34.13   5.29 -16.63
  15.50  10.61  24.22  21.38 -31.50  20.72
 -10.44  -3.96 -36.47  -7.78 -11.06   3.63
 -38.58  47.71 -36.86  13.46  14.95  27.17
 -15.89 -19.08 -17.70  24.73 -21.29  13.00
------------------------------------------
СА=-1.14531650882151
*** Результирующий массив A[5,6] ***
  28.98 -24.01 -48.61  34.13   5.29 -16.63
  15.50  10.61  24.22  21.38 -31.50  20.72
 -10.44  -1.15 -36.47  -7.78 -11.06   3.63
 -38.58  47.71 -36.86  13.46  14.95  27.17
 -15.89 -19.08 -17.70  24.73 -21.29  13.00

Количество строк в массиве: 4
Количество столбцов в массиве: 7
*** Исходный массив A[4,7] ***
  43.37   1.94  35.69  41.42 -35.34 -30.78  19.75
 -11.69   8.24 -46.34  12.28  41.78  14.78  10.01
 -23.17  12.89  -8.27  19.17   0.50  39.31  -7.97
 -32.21  32.20 -13.57 -49.98  43.38 -17.40  43.15
-------------------------------------------------
СА=5.11226028308976
*** Результирующий массив A[4,7] ***
   5.11   5.11   5.11   5.11 -35.34 -30.78   5.11
 -11.69   5.11 -46.34   5.11   5.11   5.11   5.11
 -23.17   5.11  -8.27   5.11   5.11   5.11  -7.97
 -32.21   5.11 -13.57 -49.98   5.11 -17.40   5.11

Задание 2)

// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! В других версиях языка работа не гарантируется!

begin
  var n:=ReadInteger('N=');
  Writeln('Вводите элементы массива построчно');
  var a:=MatrFill(n,n,0);
  for var i:=0 to n-1 do
    for var j:=0 to n-1 do Read(a[i,j]);
  var k:=0;
  foreach var v in a.Rows do
    if v.All(x->x=0) then k+=1;
  if k>0 then Writeln('Количество нулевых строк равно ',k)
  else begin
    foreach var v in a.Cols do
    if v.All(x->x=1) then k+=1;
    if k>0 then Writeln('Количество единичных столбцов равно ',k)
    end;
  Writeln('Работа завершена')
end.

Пример
N= 4
Вводите элементы массива построчно
0 1 0 0
1 1 0 1
0 1 1 0
1 1 1 1
Количество единичных столбцов равно 1
Работа завершена

Задание 3)

// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('N=');
  var a:=MatrRandom(n,n,0,9); a.Println(2);
  var b:=ArrFill(10,0);
  foreach var x in a.Rows.SelectMany(x->x) do b[x]+=1;
  b.Select((x,i)->(i,x)).Println
end.

Пример
N= 20
 9 5 1 6 8 0 9 4 6 4 7 0 4 4 7 9 3 0 1 1
 6 4 1 0 6 8 8 9 8 2 0 0 4 0 3 1 8 8 5 7
 6 1 5 8 6 6 0 5 4 3 6 4 9 9 5 5 4 0 0 0
 2 9 6 3 4 6 6 4 0 5 0 4 5 4 4 5 9 3 3 9
 8 2 5 4 5 5 1 4 5 8 7 8 7 5 4 7 5 1 3 9
 0 6 4 8 2 1 9 4 4 9 6 1 6 1 2 9 3 1 7 9
 5 1 8 2 8 2 7 0 9 7 9 7 9 4 8 1 8 7 2 4
 6 6 9 5 2 5 1 6 2 5 3 3 3 4 3 9 7 1 0 9
 4 8 5 7 9 8 2 2 2 0 0 6 9 3 2 9 1 3 0 2
 1 0 7 3 4 6 4 5 0 9 4 6 7 2 9 7 0 2 5 3
 3 9 3 2 4 6 4 9 1 3 7 3 1 7 8 4 0 1 2 3
 4 6 1 3 5 4 9 7 4 5 9 9 8 6 9 2 6 5 9 7
 2 4 3 6 2 1 5 9 4 5 6 8 9 1 9 6 7 0 7 0
 6 6 5 6 4 7 5 4 7 5 7 5 2 5 1 0 2 5 0 4
 8 9 3 8 8 0 0 6 7 2 5 6 7 8 1 5 8 7 1 5
 5 1 2 8 8 1 5 4 0 9 4 2 0 2 1 6 3 6 7 4
 7 8 6 5 0 1 7 4 3 5 1 5 3 5 8 7 7 5 0 7
 4 5 6 8 8 2 5 5 7 4 1 2 9 7 7 7 4 6 7 6
 3 1 0 4 7 8 8 4 4 3 8 8 5 0 9 1 2 7 6 7
 5 2 7 9 4 8 5 5 7 1 3 0 7 3 4 3 5 1 0 9
(0,37) (1,37) (2,32) (3,32) (4,50) (5,51) (6,39) (7,45) (8,36) (9,41)
(150k баллов)
0

Большое спаасибо вам!!!!