Advertisement
Guest User

Question 1

a guest
Nov 22nd, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int newsize = 0;                                     //Note: this line for printing the newvec
  6.  
  7. int* max_seq(int* vec, int size, int divisor)
  8. {
  9.     int* newvec = NULL;
  10.     int index = 0, save[2] = { 0,0 }, compare[2] = { 0,0 };
  11.     for (int i = 0; i < size; i++)
  12.     {
  13.         if (vec[i] % divisor == 0)
  14.         {
  15.             save[1] = i;
  16.         }
  17.         else
  18.         {
  19.             if (save[1] - save[0] > compare[1] - compare[0]) //Check for the max Lengths of sequence
  20.             {
  21.                 compare[0] = save[0];                       //Start Index
  22.                 compare[1] = save[1];                       //Finish Index
  23.             }
  24.  
  25.             //Reset
  26.             save[0] = i + 1;
  27.             save[1] = i + 1;
  28.         }
  29.     }
  30.     if (compare[1] != 0)
  31.     {
  32.         newvec = (int*)calloc((compare[1] - compare[0] + 1 + 2), sizeof(int));
  33.         if (newvec == NULL)
  34.             return NULL;
  35.         newvec[0] = compare[0];                          //Start Index
  36.         newvec[1] = compare[1] - compare[0] + 1;         //Length
  37.  
  38.         newsize = newvec[1] +2;                          //Note: this line for printing the newvec
  39.  
  40.         int newvecIndex = 2;
  41.         for (int i = compare[0]; i <= compare[1]; i++, newvecIndex++)
  42.         {
  43.             newvec[newvecIndex] = vec[i];
  44.         }
  45.     }
  46.     return newvec;
  47. }
  48.  
  49. void printArr(int arr[], int size)
  50. {
  51.     for (int i = 0; i < size; i++)
  52.     {
  53.         printf("%d  ", arr[i]);
  54.     }
  55. }
  56.  
  57. int main()
  58. {
  59.     int vec[] = { 1,2,3,9,5,6,3,-9,7,8,9 };
  60.     int *newvec = max_seq(vec, sizeof(vec) / sizeof(int), 3);
  61.     ///////////////////////////////////////////////////////////////
  62.     printArr(vec, sizeof(vec) / sizeof(int));
  63.     printf("\n");
  64.     printArr(newvec, newsize);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement