/* C program: print a sub-array b of size k that have mean m from a given array a of size n. Description: Question asked in written (codding) test of FactSet recruitment drive at NIT Durgapur Campus on September 14, 2016. Example 1: int a[] = {1,2,3,4,5,6,7,8,9,0}, k = 4, m = 6 then b will be b[] = {7,8,9,0} and should print 7 8 9 0 Compiler: GNU GCC v4.8.3 Author: Mangilal Sharma (with Ramesh Kumar Thakur) Date: September 15, 2015 Program for: world-of-c-programming.blogpost.com Program number: 103 */ #include <stdio.h> #define SIZE 20 void findMeanSubarray(int a[], int k, int m, int n); int main() { int a[] = {1,2,3,4,5,6,7,8,9,0}, k = 4, m = 6; int n = sizeof(a)/sizeof(a[0]); findMeanSubarray(a,k,m,n); return 0; }//Only the following function code required to write in test.
void findMeanSubarray(int a[], int k, int m, int n)
{
int b[SIZE], i, j, flag = 0, sum;
for(i=0;i<=n-k+1;i++)
{
sum=0;
for(j=0;j<k;j++) sum+= a[i+j];
if(sum == m*k) break;
}
if(i<=n-k) for(j=i;j<i+k;j++) printf("%d\t",a[j]);
else printf("Has not found any required subarray in given array.\n");
}
You can test program on this online c editor & compiler:
http://www.tutorialspoint.com/compile_c_online.php
{
int b[SIZE], i, j, flag = 0, sum;
for(i=0;i<=n-k+1;i++)
{
sum=0;
for(j=0;j<k;j++) sum+= a[i+j];
if(sum == m*k) break;
}
if(i<=n-k) for(j=i;j<i+k;j++) printf("%d\t",a[j]);
else printf("Has not found any required subarray in given array.\n");
}