4 ms·
Please never actually write code like this! Here's my C version. :) #include <stdio.h> #include <stdlib.h> #define NELEMS(x) (sizeof(x) / siz
by rcfox 14y ago
Please never actually write code like this!
Here's my C version. :)
#include <stdio.h>
#include <stdlib.h>
#define NELEMS(x) (sizeof(x) / sizeof(x[0]))
void add1(int* arr, size_t size, int val, int n) {
if(!arr || size == 0) return;
#define add1_start ( n >= 0 ? 0 : size-1 )
#define add1_end (( n >= 0 ? i < size : i >= 0 ) && ( n != 0 ? inc < abs(n) : 1 ))
#define add1_iterate ( n >= 0 ? ++i : --i )
int inc = 0;
for(int i = add1_start; add1_end; add1_iterate) {
arr[i] += (arr[i] == val ? ++inc, 1 : 0);
}
}
void test(int val, int n) {
int arr[] = {1,4,1,5,1};
add1(arr,NELEMS(arr),val,n);
for(int i = 0; i < NELEMS(arr); ++i) {
printf("%d ",arr[i]);
}
printf("\n");
}
int main() {
test(1,0);
test(1,2);
test(1,-2);
return 0;
}