Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int newsize = 0; //Note: this line for printing the newvec
- int* max_seq(int* vec, int size, int divisor)
- {
- int* newvec = NULL;
- int index = 0, save[2] = { 0,0 }, compare[2] = { 0,0 };
- for (int i = 0; i < size; i++)
- {
- if (vec[i] % divisor == 0)
- {
- save[1] = i;
- }
- else
- {
- if (save[1] - save[0] > compare[1] - compare[0]) //Check for the max Lengths of sequence
- {
- compare[0] = save[0]; //Start Index
- compare[1] = save[1]; //Finish Index
- }
- //Reset
- save[0] = i + 1;
- save[1] = i + 1;
- }
- }
- if (compare[1] != 0)
- {
- newvec = (int*)calloc((compare[1] - compare[0] + 1 + 2), sizeof(int));
- if (newvec == NULL)
- return NULL;
- newvec[0] = compare[0]; //Start Index
- newvec[1] = compare[1] - compare[0] + 1; //Length
- newsize = newvec[1] +2; //Note: this line for printing the newvec
- int newvecIndex = 2;
- for (int i = compare[0]; i <= compare[1]; i++, newvecIndex++)
- {
- newvec[newvecIndex] = vec[i];
- }
- }
- return newvec;
- }
- void printArr(int arr[], int size)
- {
- for (int i = 0; i < size; i++)
- {
- printf("%d ", arr[i]);
- }
- }
- int main()
- {
- int vec[] = { 1,2,3,9,5,6,3,-9,7,8,9 };
- int *newvec = max_seq(vec, sizeof(vec) / sizeof(int), 3);
- ///////////////////////////////////////////////////////////////
- printArr(vec, sizeof(vec) / sizeof(int));
- printf("\n");
- printArr(newvec, newsize);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement