Mega Code Archive

 
Categories / C / Development
 

Count longest segment of within an array

#include <stdio.h> int seglen(int *a, int size, int key); int main(void) { int a[] = {3, 2, 1, 0, 0, 0, 0, 3, 4, 2, 5, 1, 0, 0, 1}; int b[] = {3, 2, 1, 3, 3, 3, 0, 3, 4, 2, 5, 1, 0, 0, 1}; int i = 0; printf("array:"); for(i = 0; i < 15; i++) printf(" %d", a[i]); printf("\nlongest length of `0' segments: %d\n--\n", seglen(a, sizeof(a), 0)); printf("array:"); for(i = 0; i < 15; i++) printf(" %d", b[i]); printf("\nlongest length of `3' segments: %d\n--\n", seglen(b, sizeof(b), 3)); printf("array:"); for(i = 0; i < 15; i++) printf(" %d", a[i]); printf("\nlongest length of `8' segments: %d\n--\n", seglen(a, sizeof(a), 8)); return 0; } int seglen(int *a, int size, int key) { int i = 0; int x = 0; int retval = 0; while(i < size) { if(a[i] != key) x = i + 1; retval = (retval > (i + 1 - x)) ? retval : (i + 1 - x); i++; } return retval; }