Проблемы с простой арифметикой в ​​C ++

Итак, это логика, которую я пытаюсь реализовать:

date120 = date5;
date90 = min(date90,date120);
date60 = min(date60, date90, date120);
date30 = min(date30,date60,date90,date120);

где функция min находит наименьшее ПОЛОЖИТЕЛЬНОЕ целое число.

И вот как я зацикливаю это:

 if(strStatus != "5" && date5 >= 0)
{
    date120 = date5;
    COUT<<"date30 is "<<date30<<" and date60 is "<<date60<<" and date120 is "<<date5<<" and date90 is "<<date90<<ENDL;
    if((date120 < date90) && (date120 >= 0))
    {
        date90 = date120;
        COUT<<"and date90 is "<<date90<<ENDL;
        if((date90 < date60) && (date90 >= 0))
        {
            date60 = date90;
            COUT<<"and date60 is "<<date60<<ENDL;
            if((date60 < date30) && (date60 >= 0))
            {
                date30 = date60;
                COUT<<"and date30 is "<<date30<<ENDL;
            }
        }
        if((date60 < date30) && (date60 >= 0))
            date30 = date60;
    }
    if((date90 < date60) && (date90 >= 0))
    {
        date60 = date90;
        COUT<<"and date60 is "<<date60<<ENDL;
        if((date60 < date30) && (date60 >= 0))
            date30 = date60;
    }
    if((date60 < date30) && (date60 >= 0))
    {
        date30 = date60;
        COUT<<"and date30 is "<<date30<<ENDL;
    }
    COUT<<"Because there was a 5 and date30 is "<<date30<<" and date60 is "<<date60<<ENDL;
}

И вывод в журналах выглядит так:

date30 is -1 and date60 is -1 and date120 is 15 and date90 is -1
Because there was a 5 and date30 is -1 and date60 is -1

Я что-то не так делаю со своей логикой? Я упустил что-то логическое? Есть ли более простой способ сделать это?

0
задан Mankarse 1 February 2012 в 15:27
поделиться