Search code examples
c++sentinel

c++ Sentinel loop, store lowest and biggest number


here is my program:

#include <iostream>
using namespace std;

int main(){
    int num;
    int numtotal = 0;
    int numcount = 0;
    int big = 0;
    int low = 0;

    cout<<"enter number or 0 to exit"<<endl;
    cin>>num;
    while(num != 0){
        numtotal = numtotal + num;
        numcount++;
        big = num;
        low = num;

        cout<<"enter number or 0 to extit"<<endl;
        cin>>num;

        if(num < low){
            low = num;
        }
        else if(num > big){
            big = num;
        }
    }

    cout<<"total of numbers: "<<numtotal<<endl;
    cout<<"totoal of numbers entered: "<<numcount<<endl;
    cout<<"biggest number: "<<big<<endl;
    cout<<"lowest number: "<<low<<endl;
}

the "low" and "big" outputs are always the last 2 numbers the user inputs, for example:

( 5, 4, 3, 2)

biggest number: 2

lowest number: 0

what am I doing wrong here? thank you


Solution

  • You need to not set big and low to num if the user enters 0 inside the while loop to achieve your desired result.

    Otherwise, if you don't do this, your output lowest number will always be 0 in the case the user enters only positive numbers, which I do not think you want:

    #include <iostream>
    using namespace std;
    
    int main() {
        int num;
        int total = 0;
        int count = 0;
    
        cout << "Enter number or 0 to exit" << endl;
        cin >> num;
    
        int biggest = num;
        int lowest = num;
    
        while (num != 0) {
            total += num;
            count++;
            cout << "Enter number or 0 to exit" << endl;
            cin >> num;
            if (num != 0) {
                if (num < lowest) {
                    lowest = num;
                } else if (num > biggest) {
                    biggest = num;
                }
            }
        }
    
        cout << "Total of numbers: " << total << endl;
        cout << "Amount of numbers entered: " << count << endl;
        cout << "Biggest number: " << biggest << endl;
        cout << "Lowest number: " << lowest << endl;
    
        return 0;
    }
    

    Example Usage:

    Enter number or 0 to exit
    5
    Enter number or 0 to exit
    4
    Enter number or 0 to exit
    3
    Enter number or 0 to exit
    2
    Enter number or 0 to exit
    0
    Total of numbers: 14
    Amount of numbers entered: 4
    Biggest number: 5
    Lowest number: 2