Value在计算时总是返回0

Value always return 0 while calculating

本文关键字:返回 计算 Value      更新时间:2023-10-16

我正在为我的主题做作业,在作业中,每个学生都被要求创建一个简单的c++程序。这里的问题是,当我没有为变量分配默认值时,将发生编译错误。然而,当我分配一个默认值(在本例中,value = 0)时,该值将始终为0。

我的问题是,有没有办法解决这个问题,而不遇到编译错误?

如果有一个类似的问题,你也可以,包括解决问题的链接,以及?非常感谢!

[Edit #1:对于那些想知道为什么代码"混乱"的人来说,我只使用了简单的命令,没有使用面向对象的组件,if/else语句等。创建的项目是由"简单代码"组成的。]

[Edit #2:这是我拍摄的输出显示:https://i.stack.imgur.com/FNzkD.png

总折扣费用部分应该显示数字而不是默认值0]

(Microsoft Visual Studio Pro 2013;c++)

期望输出显示:https://i.stack.imgur.com/UTAqK.png

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
    /* Declare variables */
    int qtyVehicleCar, qtyVehicleTaxi, qtyVehicleTruck; // User input
    double feeOriginalCar, feeTotalOriginalCar, rateDiscountCar, feeTotalDiscountedCar, feeTotalAfterDiscountedCar; // variables for vehicle Car
    double feeOriginalTaxi, feeTotalOriginalTaxi, rateDiscountTaxi, feeTotalDiscountedTaxi, feeTotalAfterDiscountedTaxi; // variables for vehicle Taxi
    double feeOriginalTruck, feeTotalOriginalTruck, rateDiscountTruck, feeTotalDiscountedTruck, feeTotalAfterDiscountedTruck; // variables for vehicle Truck
    double feeRepTotalOriginalFee, feeRepTotalDiscountedFee, feeRepTotalAfterDiscounted; // Generate final output
    cout << "=====================================n";
    cout << "=====================================n";
    cout << "====== Malaysia Highway Company =====n";
    cout << "=====================================n";
    cout << "=====================================n";
    cout << endl;
    cout << "Enter quantity of the vehicles on 1st January 2014: " << endl;
    cout << "Cartt:t";
    cin >> qtyVehicleCar;
    cout << "Taxitt:t";
    cin >> qtyVehicleTaxi;
    cout << "Trucktt:t";
    cin >> qtyVehicleTruck;
    /* Lay out the Report table */
    cout << endl << endl << endl;
    cout << "Reportn";
    cout << "--------n";
    cout << endl;
    /* ============================== */
    /* Declaration prior to process */
    /* ============================== */
    /* The problematic part
    feeTotalDiscountedCar = 0;
    feeTotalDiscountedTaxi = 0;
    feeTotalDiscountedTaxi = 0;
    */
    // Prices
    feeOriginalCar = 2.00;
    feeOriginalTaxi = 1.00;
    feeOriginalTruck = 3.50;
    feeTotalOriginalCar = feeOriginalCar * qtyVehicleCar;
    feeTotalOriginalTaxi = feeOriginalTaxi * qtyVehicleTaxi;
    feeTotalOriginalTruck = feeOriginalTruck * qtyVehicleTruck;
    // In percentage
    rateDiscountCar = 2;
    rateDiscountTaxi = 10;
    rateDiscountTruck = 15;
    feeTotalAfterDiscountedCar = (rateDiscountCar/100) * feeTotalOriginalCar;
    feeTotalAfterDiscountedTaxi = (rateDiscountTaxi/100) * feeTotalOriginalTaxi;
    feeTotalAfterDiscountedTruck = (rateDiscountTruck/100) * feeTotalOriginalTruck;
    // Final total - to be displayed
    feeTotalAfterDiscountedCar = feeTotalOriginalCar - feeTotalAfterDiscountedCar;
    feeTotalAfterDiscountedTaxi = feeTotalOriginalTaxi - feeTotalAfterDiscountedTaxi;
    feeTotalOriginalTruck = feeTotalOriginalTruck - feeTotalAfterDiscountedTruck;
    feeRepTotalOriginalFee = feeTotalOriginalCar + feeTotalOriginalTaxi + feeTotalOriginalTruck;
    feeRepTotalDiscountedFee = feeTotalDiscountedCar + feeTotalAfterDiscountedTaxi + feeTotalAfterDiscountedTruck;
    feeRepTotalAfterDiscounted = feeRepTotalOriginalFee - feeRepTotalDiscountedFee;
    /* ================= */
    /* Declaration END */
    /* ================= */
    /* Gives the following variables a default value, they will be modified later by the program */
    feeTotalAfterDiscountedTruck = 0;
    feeTotalDiscountedTruck = 0;
    /* Processes */
    cout << "Itemtttt" << "Cart" << "Taxit" << "Truckt" << endl;
    cout << "------------------------------------------------------n";
    cout << "Original feettt" << "RM " << feeOriginalCar << "t" << "RM " << feeOriginalTaxi << "t" << "RM " << feeOriginalTruck << endl;
    cout << "Quantityttt" << qtyVehicleCar << "t" << qtyVehicleTaxi << "t" << qtyVehicleTruck << endl;
    cout << "Total original feett" << "RM " << feeOriginalCar << "t" << "RM " << feeOriginalTaxi << "t" << "RM " << feeOriginalTruck << endl;
    cout << "Discount ratettt" << rateDiscountCar << "%t" << rateDiscountTaxi << "%t" << rateDiscountTruck << "%t" << endl;
    cout << "Total discounted feett" << "RM " << feeTotalDiscountedCar << "t" << "RM " << feeTotalDiscountedTaxi << "t" << "RM " << feeTotalDiscountedTruck << endl;
    cout << "Total after discounted feet" << "RM " << feeTotalAfterDiscountedCar << "t" << "RM " << feeTotalAfterDiscountedTaxi << "t" << "RM " << feeTotalAfterDiscountedTruck << endl;
    cout << endl;
    /* Displays output */
    cout << "Total original feett:t" << "RM " << feeRepTotalOriginalFee << endl;
    cout << "Total discounted feett:t" << "RM " << feeRepTotalDiscountedFee << endl;
    cout << "Total after discounted feet:t" << "RM " << feeRepTotalAfterDiscounted << endl;
    cout << endl << endl;
    /* Displays end line */
    cout << "------------------- End of Program -------------------" << endl;
    system("PAUSE");
    return 0;
}

未初始化变量警告可能意味着(1)您忘记初始化某些东西或(2)您认为您初始化了它但没有。在我看来,在这种情况下,这是第二个问题。你的变量名混淆了。

例如,

feeTotalAfterDiscountedCar = (rateDiscountCar/100) * feeTotalOriginalCar;
feeTotalAfterDiscountedTaxi = (rateDiscountTaxi/100) * feeTotalOriginalTaxi;
feeTotalAfterDiscountedTruck = (rateDiscountTruck/100) * feeTotalOriginalTruck;

这些应该是折扣的金额,不是吗?那么,为什么要将它们存储在feeTotalAfterDiscountedSomething而不是feeTotalDiscountedSomething中呢?

相似的,

feeTotalAfterDiscountedCar = feeTotalOriginalCar - feeTotalAfterDiscountedCar;
feeTotalAfterDiscountedTaxi = feeTotalOriginalTaxi - feeTotalAfterDiscountedTaxi;
feeTotalOriginalTruck = feeTotalOriginalTruck - feeTotalAfterDiscountedTruck;

为什么第三个存储结果到feeTotalOriginalTruck而不是feeTotalAfterDiscountedTruck ?(还请注意,如果您解决了上面的第一个问题,减法的rhs也需要更改)。

,

feeRepTotalDiscountedFee = feeTotalDiscountedCar + feeTotalAfterDiscountedTaxi + feeTotalAfterDiscountedTruck;

类似的问题。我相信,这些都应该是feeTotalDiscountedSomething而不是feeTotalAfterDiscountedSomething

编译器正确地抱怨feeTotalDiscountedCarfeeTotalDiscountedTaxi未初始化。你需要在某个地方初始化它们。也许您希望用户像这样输入它们:

  cout << "Discount Fee Total Taxi:";
  cin >> feeTotalDiscountedTaxi;
  cout << "Discount Fee Total Car:";
  cin >> feeTotalDiscountedCar;

为什么在打印之前将它们设置为零?

feeTotalAfterDiscountedTruck = 0; feeTotalDiscountedTruck = 0;

它将显示错误,因为您试图使用变量而没有初始化它。