Improve company productivity with a Business Account.Sign Up

x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 1802
• Last Modified:

Using a do-while loop and function calls

main()
{
int a = 0, b = 1, c = 0               /* initialize the series to 0, 1 */
int sum();                              /* declare function to calc sums */

printf("fibonacci\n");
printf("%5d \n", a);
printf("%5d \n", b);

do
{

c = sum(a, b);
printf("%5d\n", c);
a = b;
b = c;

}

while (c < 10000);

}

int sum (x, y) /* the parameters x and y receive the values of */
int x, y;          /* the two arguments passed by sum(a, b) in main() */

{

return x + y;

}

Question: I need to use a subtract function to calculate and display the differences between the suceeding numbers in the fibonacci series.
I need to calculate and display thr quotients of the succeding fibonacci series in a third data column, right next to the differences.  For the divisions I need a division function named divide to perform this calculation.  To preserve the decimal accuracy of thequotients I will need to declare and use a float type function with two arguments
0
mvjohn
Asked:
1 Solution

Commented:
When the new number is calculated, the old number remains in b, so the difference could be obtained from c - b, which is probably equal to a, provided that sum(a,b) calculates a + b ... The quotient is double(c) / b. I don't see why you would need functions for these simple expressions
0

Commented:
KangaRoo: Because it is a school/college/uni assignment? :-)

mvjohn: for accuracy, use a double, not a float type.  float types are not much use (except to save memeory when you are using a LOT of them).

Also, you are using yucky old-style C declarations.  This is bad programming practice.  You should declare your sum function as:

int sum (int x, int y);

and define it as:

int sum (int x, int y) {
return x+y;
}

I think, without giving too much away, your subtract and divide functions would be

int subtract (int x, int y) {
return x-y;
}

double divide (double x, double y) {
return x/y;
}

then you'd change
printf("%5d\n", c);
into
printf("%5d %5d %8.5f\n", c, subtract(c,b), divide(c,b));

PS: you'll probaby want to put some error checking in the divide routine to avoid division by zero.

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Featured Post

Tackle projects and never again get stuck behind a technical roadblock.