Найти сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента - C (СИ)

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

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

Определить величину Y, как сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента. Матрица а (5х5). вопрос: как выделить первую строчку? как сделать так что бы в двумерном массиве он считывал только первую строку? Вот я начала и застряла на этом вопросе
int recurs (int *a)
{
static int i,l=0;
if (l==0)
//и тут надо сделать вложенное условие что если конец строки и флаг l равен нулю то:
return 0;
else 
  if (*a==0)
{
f++;
return *(a+1)+recurs(a+1);
}

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

textual
Листинг программы
#include <stdio.h>
 
int recurs (int *arr, int start, int end)
{
    if (start == 0)
        for (;start<end; start++)
        {
            if (arr[start] == 0)
            {
                start++;
                if (arr[start]>0)
                    return arr[start]+recurs(arr, ++start, end);
                else
                    return 0+recurs(arr, ++start, end);
            }       
        }
    if (start>end)
        return 0;
    else
    {
        if (arr[start]>0)
            return arr[start]+recurs(arr, ++start, end);
        else
            return 0+recurs(arr, ++start, end);
    }
}
 
int main(void)
{
    int array[5][5] =
    {   0, 9, -2, 9, 9,
        -3, 4, 0, -2, 6,
        7, 2, 4, 0, 9,
        1, 2, 3, 4, 5,
        0, 0, -2, 1, 1 };
    
    printf("Y = %i\n", recurs (&array[0][0], 0, 4));
 
    return 0;
}

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

В данном коде представлена функция recurs, которая рекурсивно обходит элементы матрицы и суммирует положительные числа, расположенные после первого нулевого элемента в первой строке.

  1. В первой строке кода определена функция recurs, которая принимает указатель на первый элемент матрицы, номер первого элемента и номер последнего элемента.
  2. Если первый элемент матрицы равен нулю, то в цикле до следующего ненулевого элемента с помощью оператора start++ перебираются элементы матрицы.
  3. Если элемент больше нуля, то к нему добавляется результат рекурсивного вызова функции recurs с увеличенным значением start и неизменным значением end.
  4. Если элемент меньше или равен нулю, то возвращается 0.
  5. Если первый элемент матрицы не равен нулю, то в цикле до последнего элемента с помощью оператора start++ перебираются элементы матрицы.
  6. Если элемент больше нуля, то к нему добавляется результат рекурсивного вызова функции recurs с увеличенным значением start и неизменным значением end.
  7. Если элемент меньше или равен нулю, то возвращается 0.
  8. Если первый элемент матрицы равен нулю и все элементы после него меньше или равны нулю, то возвращается 0.
  9. Если первый элемент матрицы больше нуля, то возвращается результат рекурсивного вызова функции recurs с увеличенным значением start и неизменным значением end.
  10. В функции main определена матрица array[5][5], заполненная тестовыми значениями.
  11. С помощью функции printf выводится результат вызова функции recurs, которая рекурсивно обходит элементы матрицы и суммирует положительные числа, расположенные после первого нулевого элемента в первой строке.
  12. Возвращается 0, завершая работу программы.

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


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

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

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