Vasu_candy - 6 months ago 50
C Question

# Modified Fibonacci in C

I need to generate a modified Fibonacci series and it must be completely dynamic. Here f0 and f1 will be given, i.e f0=1 and f1=3 after generating the series. I should print the resulting value at a particular index.

Ex: f0 = 1, f1 = 3, testcase(n) = 3 (This can change not a particular value)

t1 = 4 t2 = 8 t3 = 11 and so on. Series should be generated for 11 elements by adding current element and previous element using: f[i] = f[i-1] + f[i-2]

It can be represented as:

``````0=>1
1=>3
2=>4
3=>7
4=>11
5=>18
6=>29
7=>47
8=>76
9=>123
10=>199
11=>322
``````

I should print the values at indices 4,8 and 11 (which must be the output of my program), i.e.
`11 76 322`
.

Input Format:

f0,f1 and n (where n is the no of indices)

where ti=[t1,t2,....tn-1] (which specifies the index for R-Fibonacci series).

Output Format:
Print the values from the R-fibonacci series based on the given indices.

Sample Input:
1 3 3 4 8 11

Sample Output:
11 76 322

I have the code that generates the Fibonacci series for the above program but I want to display the value at 4,8,11 indices. Here is the code:

``````int fib(int n)
{
int f[n+1];
int i;
f[0]=1;
f[1]=3;
for(i=2;i<=n;i++)
{
f[i]=f[i-1]+f[i-2];
}
return f[n];
}

int main()
{
int n=11
printf("%d ",fib(n));
getchar();
return 0;
}
``````

Like this? The array is defined in `main` and passed to the function as an argument. The function fills in the array, returns nothing, and then in `main` you can print the elements you want.

You will need a loop to do that, with another dynamic array holding the indices you are asked to print.

``````#include <stdio.h>

void fib(int n, int *f)
{
int i;
f[0] = 1;
f[1] = 3;
for(i = 2; i <= n; i++)
{
f[i] = f[i-1] + f[i-2];
}
}

int main()
{
int n = 11;
int f[n+1];
fib(n, f);
printf("%d ", f[8]);
printf("%d ", f[11]);
printf("\n");
getchar();
return 0;
}
``````

Program output:

``````76 322
``````

I will leave you some code to write, but suppose you make a dynamic array of the index values required, such as

``````int index[m];
index[0] = 4;
index[1] = 8;
index[2] = 11;
``````

you can print the series term with such as

``````printf("%d ", f[ index[i] ]);
``````
Source (Stackoverflow)