C/C++

Помогите решить задачу, пожалуйста. (Язык Си)

Найдите сумму элементов массива между двумя первыми нулями. Если двух нулей нет в массиве, то выведите ноль.
#include <stdlib.h>
#include <stdio.h>
#define N 13
int sum(int* box, int n) {
int* beg = NULL;
int* end = NULL;
int* start = NULL;
int s = 0;
if (!box || !n) return s;
beg = box;
end = box + n;
do if (!*beg++) break; while (beg != end);
if (beg == end) return s;
start = beg;
if (!*start) return s;
do if (!*beg) break; while (++beg != end);
if (beg == end) return s;
end = beg;
do s += *start; while (++start != end);
return s;
}
void show(int* box, int n) {
int i;
if (!box || !n) return;
for (i = 0; i < n; ++i) printf("%i ", box[i]);
puts("");
}
int main(void) {
int a[N] = { 1, 8, 0, 3, 6, 7, 0, 6, 9, 8, 0, 5, 3 };
int b[N] = { 2, 8, 0, 3, 6, 7, 1, 6, 9, 8, 4, 5, 3 };
int c[N] = { 3, 8, 0, 0, 6, 7, 1, 6, 9, 8, 4, 5, 3 };
int d[N] = { 4, 8, 5, 3, 6, 7, 1, 6, 9, 8, 4, 5, 3 };
int sum_a, sum_b, sum_c, sum_d;
show(a, N);
sum_a = sum(a, N);
printf("Sum a: %i\n", sum_a);
show(b, N);
sum_b = sum(b, N);
printf("Sum b: %i\n", sum_b);
show(c, N);
sum_c = sum(c, N);
printf("Sum c: %i\n", sum_c);
show(d, N);
sum_d = sum(d, N);
printf("Sum d: %i\n", sum_d);
system("pause > nul");
return 0;
}
Дастан Тауекелов
Дастан Тауекелов
92 092
Лучший ответ
Без табуляции это будет выглядеть очень не очень, поэтому вот ссылка на код: https://onlinegdb.com/rJHgPeuPO
P.S. Стричь исключения под одну гребёнку со возвратным значением функции не очень красиво, поэтому лучше воспользоваться какой-нибудь альтернативой, хотя бы "assert.h", который просто поругается, если не будет найдено двух "0"