Hi there guys.

Literally I have been asked this question;

"The Fibonacci sequence is 0, 1, 1, 2, 3, 5, 8, 13, … ; the first two terms are 0 and 1, and each term thereafter is the sum of the two preceding terms – i.e., Fib[n] = Fib[n – 1] + Fib[n – 2]. Using this information, write a C++ program that calculates the nth number in a Fibonacci sequence, where the user enters n in the program interactively. For example, if n = 6, the program should display the value 5."

I have created the program, but I want to give the User an option to either go back to the start of the program, or to quit it. i.e. I don't want them to have to continually click 'Run'. I know this is something to do with the 'Do While' Loop, but I am a bit of a novice and not really sure how to go about it/code it.

Any thoughts on my question and/or examples/walkthroughs would be much appreciated, just trying to get my head round it. Any suggestions to improve my code so far is also welcome. Thank you! :)

Here is my code so far.

#include <iostream>
#include <cmath>

using namespace std;

int main() {

    int N;

    cout<<"This program is designed to give the user any value of the Fibonacci Sequence that they desire, provided the number is a positive integer.";//Tell user what the program does

    cout<<"\n\nThe formula of the Fibonacci Sequence is;   Fib[N] = Fib[N – 1] + Fib[N – 2]\n\n"; //Declare the Formula for the User

    cout<<"Enter a value for N, then press Enter:"; //Declare Value that the User wants to see

    cin>>N;//Enter the Number

    if (N>1) {
        cout<<"\nFor your value of N, \nFib[N]= "<<((pow(((1+(pow(5, 0.5)))), N))-(pow(((1-(pow(5, 0.5)))), N)))*(pow((pow(2.0, N)*(pow(5, 0.5))), -1));//Mathematic formula for Fibonacci Sequence
    }

    if (N<0) {
        cout<<"\n\nThe value N must be a POSITIVE integer, i.e. N > 0"; //Confirm that N must be a positive integer. Loop.
    }
    if (N>100) {
        cout<<"\n\nThe value for N must be less than 100, i.e. N < 100. N must be between 0 - 100.";//Confirm that N must be less than 100. Loop.
    }
    if (N==0) {
        cout<<"\n\nFor your value of N, \nFib[0] = 0"; //Value will remain constant throughout, cannot be caculated through formula. Loop.
    }
    if (N==1) {
        cout<<"\n\nFor your value of N. \nFib[1]=1";//Value will remain constant throughout, cannot be caculated through formula. Loop.
    }


    return 0;
}

PS Sorry for it all being in Green, just the way it came out. Obviously not displayed like that in the actually program.

Also changed it to,

if (N>1 and N<100) {
        cout<<"\nFor your value of N, \nFib[N]= "<<((pow(((1+(pow(5, 0.5)))), N))-(pow(((1-(pow(5, 0.5)))), N)))*(pow((pow(2.0, N)*(pow(5, 0.5))), -1));//Mathematic formula for Fibonacci Sequence

to stop values of over 100 being entered. Cheers

You need to wrap the body of your code (lines 10-33) inside a loop. When the result is displayed, ask the user if they want to find another, get at yes/no type response, check it.

You would want to wrap lines 10-33 in a do-while loop.

int continue = 0;
do
{
    //lines 10-33
    cout << "Do you want to go agian? << endl
    cout << "Enter 1 for yes 0 for no: ";
    cin >> continue;
} while (continue != 0) // doing this to allow all non 0 numbers to continue

This should get you started. You probably want to have some input verification so that you can have a more specific while condition.

Edited 3 Years Ago by NathanOliver

Thanks very much I will give it a try. However I come up witht he problem that one of the conditions specified for this assignment is "Some of you have inquired if you can use a formula (available on the web) to calculate the Fibonacci series. The answer is: NO."

While I have no actually any of my code from online (I did it in maths last year), I can't see my argument holding.

So now I have a new question, can anyone possible give hints/tips/steps to calculate the answer?

I have a basic understanding, its just I don't know how to write the code to calculate the answer with the formula Fn = Fn-1 +Fn+2.

Badly worded question, but hard to say. Any help with this question/writing it in code would be much appriciated. Thanks again

Also, Nathan Oliver, I tried your method but the int continue = 0 comes up with the error 'unqualified ID'. What can I do to fix this? Here is code now.

#include <iostream>
#include <cmath>

using namespace std;

int main() {

      int N;
      int continue = 0

    do {
        cout<<"This program is designed to give the user any value of the Fibonacci Sequence that they desire, provided the number is a positive integer.";//Tell user what the program does

        cout<<"\n\nThe formula of the Fibonacci Sequence is;   Fib[N] = Fib[N – 1] + Fib[N – 2]\n\n"; //Declare the Formula for the User

        cout<<"Enter a value for N, then press Enter:"; //Declare Value that the User wants to see

        cin>>N;//Enter the Number

        if (N>1 and N<100) {
            cout<<"\nFor your value of N, \nFib[N]= "<<((pow(((1+(pow(5, 0.5)))), N))-(pow(((1-(pow(5, 0.5)))), N)))*(pow((pow(2.0, N)*(pow(5, 0.5))), -1));//Mathematic formula for Fibonacci Sequence
        }

        if (N<0) {
            cout<<"\n\nThe value N must be a POSITIVE integer, i.e. N > 0"; //Confirm that N must be a positive integer. Loop.
        }
        if (N>100) {
            cout<<"\n\nThe value for N must be less than 100, i.e. N < 100. N must be between 0 - 100.";//Confirm that N must be less than 100. Loop.
        }
        if (N==0) {
            cout<<"\n\nFor your value of N, \nFib[0] = 0"; //Value will remain constant throughout, cannot be caculated through formula. Loop.
        }
        if (N==1) {
            cout<<"\n\nFor your value of N. \nFib[1]=1";//Value will remain constant throughout, cannot be caculated through formula. Loop.
        }

        {
            cout<<"Do you want to enter another number?";
            cout<<"Enter 1 to continue and 0 to exit";
            cin>>continue;

    } while (continue ! = 0);

    return 0;
}


}

you need a ; at the end of line 9. Also change continue ! = 0 on line 42 to continue != 0. As far as an algorithim for the fib series there are plenty of threads on this site that you can read to see how you would do it.

Thanks again Nathan. I ended up using a char function which worked. And yeah, I have looked, but the majority I have seen have been people asking if there code is perfect etc....rather not copy was just looking for few started points/steps which I could work on myself then refer back to other peoples questions if needed.

Often, the fibonacci sequence is computed using a recursive function as shown in your comments (except for 0 and 1), and fib(6) == 8, not 5. I think the teacher wants you to learn how to write a recursive function instead of plugging in a formula that you looked up on the web. The function signature would be something like this: unsigned long fib(unsigned long n);

rubberman, thanks for that. Not sure what you mean by "fib(6) == 8, not 5"?

So far I have this code (too add to code above);

long long Fibonacci(int N);

int main()
{
    cout<<"Input Fibonacci Index number: ";
    int Index = 0;
    cin>> Index;
    cout<<"Answer"<<Fibonacci(N)<<endl;
    return 0;

}
long long Fibonacci(int input)
{
    if (N < 2)
        return N;
    else
    {
        return Fibonacci(N - 1) + Fibonacci(N - 2);
    }
}

However I am not sure about the

 cout<<"Input Fibonacci Index number: ";
    int Index = 0;
    cin>> Index;
    cout<<"Answer"<<Fibonacci(N)<<endl;
    return 0;

As it returns an error of not being able to identify N. This part of the code I got from looking at his notes. ANy help appriciated, just shooting in the dark here really, trial and error

This article has been dead for over six months. Start a new discussion instead.