代码之家  ›  专栏  ›  技术社区  ›  Red Rabbit

无效操作数和非法赋值转换

  •  -1
  • Red Rabbit  · 技术社区  · 6 年前

    此程序的目的是获取一个美元金额并打印将要返回的票据数量,以最有效地给出该金额和剩余的零钱(i、 e.$523.33=$50 x 10/$20 x1/$1 x 3/.33剩余)。它应该工作除了错误,我在附加的图像。我试过我所学的每一次铸造,但都不管用。

    #include <iostream>
    using namespace std;
    
    
    int main()
    {
        double withdrawAmount; //declare variable to store use input for desired withdraw amount
    
        do { //Ask for valid user input
           cout << "Please enter an amount to withdraw from yor account" << endl;
           cin >> withdrawAmount; //save user input into withdrawAmount variable
       } while (withdrawAmount < 1);
    
       //Print greatest # of bills that can be taken from the withdrawlAmount
         cout << "$50 bills :"<< (int) withdrawAmount / 50 << endl;    
       //Print number of $50 bills
         (int) withdrawAmount %= 50;
         cout << "$20 bills: " << (int) (withdrawAmount %= 50) / 20 << endl; 
       //Print number of $20 bills
         (int) withdrawAmount %= 20;
         cout << "$10 bills: " << (int) (withdrawAmount %= 20) / 10 << endl; 
      //Print number of $10 bills
       (int)withdrawAmount %= 10;
       cout << "$5 bills: " << (int) (withdrawAmount %= 10) / 5 << endl; 
      //Print number of $5 bills
       (int)withdrawAmount %= 5;
       cout << "$1 bills: " << (int) (withdrawAmount %= 5) / 1 << endl; 
      //Print number of $1 bills
       (int) withdrawAmount %= 1;
       cout << "Remaining: " << withdrawAmount / 1 << endl;
       return 0;
    }
    

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jarod42    6 年前

    (int) withdrawAmount %= 50; 应替换为

    withdrawAmount = std::fmod(withdrawAmount, 50);
    

    其他值也一样(别忘了 #include <cmath> ).

    作为替代方案:

    double input; //declare variable to store use input for desired withdraw amount
    
    do { //Ask for valid user input
       cout << "Please enter an amount to withdraw from yor account" << endl;
       cin >> input; //save user input into withdrawAmount variable
    } while (input < 1);
    int withdrawAmount = input; // rounded toward 0.
    
    std::cout << "$50 bills :"<< withdrawAmount / 50 << std::endl;
    withdrawAmount %= 50;
    
    // And so on...
    
    // Final remaining
    std::cout << "Remaining: " << input - int(input) << std::endl;