1. значения элементов одномерного массива s размерности k уменьшить на значение его минимального элемента. 2. найти и напечатать первые положительные элементы строк матрицы а размерности m×k.

lolipop891 lolipop891    3   01.09.2019 21:10    1

Ответы
9276 9276  06.10.2020 10:28
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017
// Внимание! Если программа не работает, обновите версию!

№1

begin
  var s:=ArrRandom(ReadInteger('k='),1,50); s.Println;
  var min:=s.Min;
  s.Transform(x->x-Min); s.Println
end.

Пример
k= 13
41 31 28 2 50 46 7 31 40 30 13 8 26
39 29 26 0 48 44 5 29 38 28 11 6 24

№2

begin
  var m:=ReadInteger('Количество строк в матрице:');
  var k:=ReadInteger('Количество столбцов в матрице:');
  Writeln('*** Исходная матрица [',m,',',k,'] ***');
  var a:=MatrRandom(m,k,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  Writeln('Первые положительные элементы в строках');
  a.Rows.Select(r->r.Where(x->x>0).Take(1)).SelectMany(x->x).Println
end.

Пример
Количество строк в матрице: 5
Количество столбцов в матрице: 8
*** Исходная матрица [5,8] ***
 -91 -83 -26   4 -40  33 -40  -6
  71 -87  -8  65  94 -19  59  -9
 -91 -17  69  32  30  90  63   4
 -53 -52  93   4 -34 -70 -75 -95
 -99 -42  95  69 -70 -62  39 -22

Первые положительные элементы в строках
4 71 69 93 95
ПОКАЗАТЬ ОТВЕТЫ
lihach121 lihach121  06.10.2020 10:28
Program one;uses crt;
const
    k = 10;
var
    S: array[1..k] of integer;
    i, min: integer;
begin
    randomize;
    writeln('Array:');
    for i := 1 to k do
    begin
        S[i] := random(20);
        write(S[i], ' ');
    end;    writeln;
        min := S[1];
     for i := 2 to k do
        if S[i] < min then
            min := S[i];
    writeln('Min: ', min);
    writeln('Result:');
    for i := 1 to k do
    begin
        S[i] := S[i] - min;
        write(S[i], ' ');
    end;
end.

program two;
uses crt;
const
    m = 5;
    k = 5;
var
    A: array[1..m] of array[1..k] of integer;
    i, j, min: integer;
begin
    randomize;
    writeln('Matrix:');
    for i := 1 to m do
    begin
        for j := 1 to k do
        begin
            A[i][j] := random(20) - 10;
            write(A[i][j], ' ');
        end;
        writeln;
    end;
    writeln('Result:');
    for i := 1 to m do
    begin
        for j := 1 to k do
        begin
            if A[i][j] > 0 then
            begin
                write(A[i][j], ' ');
                break;
            end;
        end;
    end;
end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика