владимировнаКлютко
?>

в двумерном массиве (nxm) натуральных случайных чисел от 0 до 199. найти и вывести на экран все двухзначные числа, у которых сумма цифр кратная 2, найти количество таких чисел

Информатика

Ответы

rgmarket
const
  n=8;  m=8;

var 
  mas: array[1..n,1..m] of integer;
  i,j: integer;  qty: integer;
  a,b: integer;

begin 
  
randomize;

  {Заполнение массива числами}
  for i:=1 to n do begin   
 for j:=1 to m do begin     
mas[i,j]:=random(200); 
if mas[i,j]=200 then mas[i,j]:=199;
write(mas[i,j],'    ');   
end;   
writeln; 
end;

  writeln('******************');

  {Поиск двузначных чисел, сумма цифр которых кратна 2} 
qty:=0;
  for i:=1 to n do   
for j:=1 to m do     
if (mas[i,j]<100) and (mas[i,j]>9) then begin     
  a:=mas[i,j] div 10;   
    b:=mas[i,j]-a*10;   
   if (a+b) mod 2=0 then     
     begin       
    Inc(qty);     
      write(mas[i,j],'    ');       
  end;   
end;

  writeln(''); 
 writeln('количество чисел удовлетворяющих условию ',qty);

end.
в двумерном массиве (nxm) натуральных случайных чисел от 0 до 199. найти и вывести на экран все дв
kategar
// PascalABC.NET 3.2, сборка 1488 от 21.06.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var (n,m):=ReadInteger2('Количество строк и столбцов в массиве:');
  Writeln('*** Исходный массив [',n,',',m,'] ***');
  var a:=MatrRandom(n,m,0,199);
  a.Println(4); Writeln(4*a.ColCount*'-');
  Write('Искомые числа: ');
  var s:=a.Rows.SelectMany(x->x).Where(x->x.Between(10,99))
      .Where(x->(x div 10+x mod 10).IsEven);
  s.Println;
  Writeln('Количество чисел равно ',s.Count)
end.

Пример
Количество строк и столбцов в массиве: 4 7
*** Исходный массив [4,7] ***
  65 112  78 133  52 108  39
  73 162  64  31  55 156 107
  14 105  88  55  16 146 143
  19  97  33 138  16  37 198

Искомые числа: 39 73 64 31 55 88 55 19 97 33 37
Количество чисел равно 11
Андрей Шитенкова
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016
begin
  var a:=ArrRandom(100,-10,10);
  a.Println;
  Writeln(a.Where(x->x>0).Count,' положительных, ',
    a.Where(x->x<0).Count,' отрицательных')
end.

Тестовое решение:
4 -6 0 8 2 -2 -1 -8 -6 8 -3 7 4 -7 -5 9 0 -3 -7 1 0 -4 6 3 8 -10 4 9 3 5 8 5 5 8 10 4 -8 3 8 8 -9 2 7 -8 -7 -5 2 -9 0 9 -7 7 -2 -6 7 -2 -1 7 -10 2 4 1 -1 0 10 3 -8 6 -6 2 6 7 -1 -4 -1 8 0 3 0 2 -2 2 -1 5 1 -9 -4 1 -9 1 -6 -5 3 -4 -7 1 -7 -3 -7 1
51 положительных, 42 отрицательных
savva-vika
const
  n = 15;

var
  a, b: array[1..n] of integer;
  i, j, step, t: integer;
  flag: boolean;

begin
  Randomize;
  Writeln('Исходные элементы массива');
  for i := 1 to n do
  begin
    a[i] := Random(10) - 5;
    Write(a[i]:4)
  end;
  { Сортируем массив (метод Шелла) }
  step := n div 2;
  while step > 0 do
  begin
    for j := n - step downto 1 do
    begin
      i := j;
      while i <= n - step do
      begin
        if a[i] > a[i + step] then
        begin
          t := a[i]; a[i] := a[i + step]; a[i + step] := t
        end;
        i := i + step
      end
    end;
    step := step div 2
  end;
  {
  проходим по массиву и если элемент встречается более одного раза подряд,
  переносим его в другой массив
  }
  j := 0; t := a[1]; flag := false;
  for i := 2 to n do
  begin
    if (a[i] = t) and (not flag) then
    begin
      j := j + 1; b[j] := t; flag := true
    end
    else begin flag := false; t := a[i] end
  end;
  Writeln;
  Writeln('Отобранные элементы массива');
  for i := 1 to j do Write(b[i]:4);
  Writeln
end.

Тестовое решение:

Исходные элементы массива
  -2   4   1  -3  -1  -2  -5  -1   2   4   1   3  -5  -2  -3
Отобранные элементы массива
  -5  -3  -2  -1   1   4

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

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

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