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  
mvjohnAsked:
Who is Participating?
 
RONSLOWConnect With a Mentor 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
 
KangaRooCommented:
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
All Courses

From novice to tech pro — start learning today.