Найти сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента - 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, которая рекурсивно обходит элементы матрицы и суммирует положительные числа, расположенные после первого нулевого элемента в первой строке.
- В первой строке кода определена функция recurs, которая принимает указатель на первый элемент матрицы, номер первого элемента и номер последнего элемента.
- Если первый элемент матрицы равен нулю, то в цикле до следующего ненулевого элемента с помощью оператора start++ перебираются элементы матрицы.
- Если элемент больше нуля, то к нему добавляется результат рекурсивного вызова функции recurs с увеличенным значением start и неизменным значением end.
- Если элемент меньше или равен нулю, то возвращается 0.
- Если первый элемент матрицы не равен нулю, то в цикле до последнего элемента с помощью оператора start++ перебираются элементы матрицы.
- Если элемент больше нуля, то к нему добавляется результат рекурсивного вызова функции recurs с увеличенным значением start и неизменным значением end.
- Если элемент меньше или равен нулю, то возвращается 0.
- Если первый элемент матрицы равен нулю и все элементы после него меньше или равны нулю, то возвращается 0.
- Если первый элемент матрицы больше нуля, то возвращается результат рекурсивного вызова функции recurs с увеличенным значением start и неизменным значением end.
- В функции main определена матрица array[5][5], заполненная тестовыми значениями.
- С помощью функции printf выводится результат вызова функции recurs, которая рекурсивно обходит элементы матрицы и суммирует положительные числа, расположенные после первого нулевого элемента в первой строке.
- Возвращается 0, завершая работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д