Найти количество положительных элементов каждого столбца матрицы - Pascal

Узнай цену своей работы

Формулировка задачи:

дан двухмерный массив размером m*n. найти кол-во положительных элем-ов каждого столбца массива. из первых четырёх строк массива сформировать четыре новых вектора (одномерных массива) и в каждом из них удалить все эл-ты меньше значения k! если что,в долгу не останусь( желательно решить как можно скорее)

Решение задачи: «Найти количество положительных элементов каждого столбца матрицы»

textual
Листинг программы
type
    TVector = Array[Byte] Of ShortInt;
    TArray = Array[Byte] Of TVector;
var
    orig: TArray;
    a, b, c, d: TVector;
    i, j, n, m, count, m1, m2, m3, m4: Byte;
    k: ShortInt;
begin
    {Заполнение базового массива}
    repeat
        Write('Input m (>4) = '); ReadLn(n);
    until (n > 3);
    repeat
        Write('Input n (>0) = '); ReadLn(m);
    until (m > 0);
    Randomize();
    for i := 0 to n - 1 do
    begin
        WriteLn;
        for j := 0 to m - 1 do
        begin
            orig[i, j] := Random(199) - 99;
            Write(orig[i, j]:5);
        end;
    end;
    {количество положительных элементов в столбцах}
    WriteLn;
    for j := 0 to m - 1 do
        Write('-----');
    WriteLn;
    for j := 0 to m - 1 do
    begin
        count := 0;
        for i := 0 to n - 1 do
            if (orig[i, j] > 0)
            then
                Inc(count);
        Write(count:5);
    end;
    {копирование в отдельные векторы и удаление меньших k}
    WriteLn;
    Write('Input k='); ReadLn(k);
    a := orig[0]; m1 := m;
    i := 0;
    while (i < m1) do
    begin
        if (a[i] < k)
        then
        begin
            for j := i to m1 - 2 do
                a[j] := a[j + 1];
            Dec(m1);
        end
        else
            Inc(i);
    end;
    WriteLn; WriteLn;
    for j := 0 to m1 - 1 do
        Write(a[j]:5);
    b := orig[1]; m2 := m;
    i := 0;
    while (i < m2) do
    begin
        if (b[i] < k)
        then
        begin
            for j := i to m2 - 2 do
                b[j] := b[j + 1];
            Dec(m2);
        end
        else
            Inc(i);
    end;
    WriteLn; WriteLn;
    for j := 0 to m2 - 1 do
        Write(b[j]:5);
    c := orig[2]; m3 := m;
    i := 0;
    while (i < m3) do
    begin
        if (c[i] < k)
        then
        begin
            for j := i to m3 - 2 do
                c[j] := c[j + 1];
            Dec(m3);
        end
        else
            Inc(i);
    end;
    WriteLn; WriteLn;
    for j := 0 to m3 - 1 do
        Write(c[j]:5);
    d := orig[3]; m4 := m;
    i := 0;
    while (i < m4) do
    begin
        if (d[i] < k)
        then
        begin
            for j := i to m4 - 2 do
                d[j] := d[j + 1];
            Dec(m4);
        end
        else
            Inc(i);
    end;
    WriteLn; WriteLn;
    for j := 0 to m4 - 1 do
        Write(d[j]:5);
end.

Объяснение кода листинга программы

Этот код написан на языке Pascal и выполняет следующие действия:

  1. Заполняет базовый массив случайными числами.
  2. Вычисляет количество положительных элементов в каждом столбце матрицы.
  3. Выводит результаты на экран. В коде используются следующие типы данных:
    • TVector: это массив из коротких целых чисел (Byte).
    • TArray: это массив из TVector. Основная часть кода находится внутри цикла, который выполняется столько раз, сколько требуется для заполнения базового массива. Внутри этого цикла каждый столбец матрицы заполняется случайным образом. Затем происходит вычисление количества положительных элементов в каждом столбце. Для этого используется цикл, который проходит по всем элементам столбца и проверяет, больше ли текущий элемент нуля. Если это так, то счетчик положительных элементов увеличивается. В конце кода выводится количество положительных элементов в каждом столбце матрицы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы