После последнего else всё равно выводит целое число, хотя надо дробное. Что делать?


using namespace std;


int main() {
    setlocale(LC_ALL, "RUS");
   int  k;
   double k1;
    
    cout << "введите положительное количество грибов:  ";
    cin >> k;
    k1 = k;
    

    cout << "мы нашли ";

    if (floor(k) == k)
    
    {
      if ((k % 100 == 11) || (k % 100 == 12) || (k % 100 == 13) || (k % 100 == 14))
    
      {
        cout << k << " грибов в лесу" << endl;

        return 0;

      }
    
      if (k % 10 == 1)
    
      {
        cout << k << " гриб в лесу" << endl;

        return 0;
    
      }
    
      if ((k % 10 == 2) || (k % 10 == 3) || (k % 10 == 4))
    
      {
        cout << k << " гриба в лесу" << endl;

        return 0;
    
      }
    
      if ((k % 10 > 4) || (k % 10 == 0))
    
      {
        cout << k << " грибов в лесу" << endl;

        return 0;
    
      }

    }
   
    else
    {
        cout << k1 << " гриба в лесу";
        return 0;
    }
}

Ответы (1 шт):

Автор решения: Mikhailo
int main() {
    setlocale(LC_ALL, "RUS");
    double  k;
    cout << "введите положительное количество грибов:  ";
    cin >> k;
    cout << "мы нашли ";

    if (floor(k) == k) {
        int m = k;

        if ((m % 100 == 11) || (m % 100 == 12) || (m % 100 == 13) ||
                (m % 100 == 14)) {
            cout << m << " грибов в лесу" << endl;
            }
        else if (m % 10 == 1) {
            cout << m << " гриб в лесу" << endl;
            }
        else if ((m % 10 == 2) || (m % 10 == 3) || (m % 10 == 4)) {
            cout << m << " гриба в лесу" << endl;
            }
        else {
            cout << m << " грибов в лесу" << endl;
            }
        }
    else {
        cout << k << " гриба в лесу";
        }
    }
→ Ссылка