mardi 29 novembre 2016

What's wrong in my if statements logic?

In this little program I try to order 3 numbers in a descending order. But seems like the line in which has "// 3 2 1 - doesn't work" as a comment isn't working as expected. It seems like my logic is correct.

If the value hold on the integer numbThree is bigger than numbOne and if numbOne is NOT bigger than numbTwo (NOT == else) it should ouput numbThree, numbTwo and numbOne in this order, why doesn't it work?

#include <iostream>

int main() {
int numbOne = 0, numbTwo = 0, numbThree = 0;
std::cin >> numbOne >> numbTwo >> numbThree;

if (numbOne > numbTwo) {
    if (numbTwo > numbThree) {
        std::cout << numbOne << " " << numbTwo << " " << numbThree << std::endl; // 1 2 3
    }
    else {
        std::cout << numbOne << " " << numbThree << " " << numbTwo<< std::endl; // 1 3 2
    }
}
else if (numbTwo > numbOne) {
    if (numbOne > numbThree) {
        std::cout << numbTwo << " " << numbOne << " " << numbThree << std::endl; // 2 1 3 - works
    }
    else {
        std::cout << numbTwo << " " << numbThree << " " << numbOne << std::endl; // 2 3 1
    }
}
else if (numbThree > numbOne) {
    if (numbOne > numbTwo) {
        std::cout << numbThree << " " << numbOne << " " << numbTwo << std::endl; // 3 1 2
    }
    else {
        std::cout << numbThree << " " << numbTwo << " " << numbOne << std::endl; // 3 2 1 - doesn't work
    }
}

std::cin.get();
std::cin.ignore();
return 0;
}

Thanks in advance for helping me out.

Aucun commentaire:

Enregistrer un commentaire