Найти сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента - 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, завершая работу программы.