簡體   English   中英

嘗試將帶有值的不同變量添加到一小串 C++ 程序中

[英]Trying to add different variables with values to a small string of program C++

我在學校有一個項目,我們應該在那里創建一個短代碼,我嘗試了一些新的東西,結果是這樣的:

#include <iostream>
#include <string>
#include <cstdlib>

int main() 
{
    const double A =10.25, B = 15.75, C = 13.25, D = 9.75;
    std::string line = "";
    double sum = 0.0;
    double price;
    while (line != "T") 
    {
        std::cout << "please enter item ordered [A/B/C/D] or \"T\" to calculate total: " << std::endl;
        std::cout << "current sum : " << sum << std::endl;
        std::cin >> line;
        sum += atof(line.c_str());
    }
    price = sum + (sum * .06);
    std::cout << "please pay this amount: $" << price << std::endl;
}

它應該問一個問題,然后取金額並添加所有訂單(a,b,c,d),然后添加 6% 的稅。 我嘗試將 then 設為 int 但這似乎沒有什么不同。

我似乎無法讓不同的變量來保存一個數字。 有什么我可以做的或者我應該嘗試一種策略嗎?

提前致謝

您的提示暗示用戶將鍵入AB等,但代碼稍后將其視為浮點值( sum += atof(line.c_str()); )。

如果您在程序中鍵入一個值,例如10.25 ,並以字母T結尾 - 它會起作用。

可能,不是你想要的。

您可以使用if-else語句查看是否輸入了AB ,然后將其中一個變量的值添加到sum

如果您將行更改為“char”而不是“string”並使用數組,那么它將起作用。

#include <iostream>
#include <string>
#include <cstdlib>

int main()
{
    const double products[4] = {10.25, 15.75, 13.25, 9.75}; //A-10.25, B-15.75, C-13.25, D-9.75
    char line = '-';
    double sum = 0.0;
    double price;
    while (line != 'T')
    {
        std::cout << "please enter item ordered [A/B/C/D] or \"T\" to calculate total: " << std::endl;
        std::cout << "current sum : " << sum << std::endl;
        std::cin >> line;
        sum += products[ int(line-'A') ];
    }
    price = sum + (sum * .06);
    std::cout << "please pay this amount: $" << price << std::endl;
}

line 是一個字符,所以std::cin >> line; 將讀取字符,然后int(character)返回數字作為 ASCII 表(谷歌,如果你不知道那是什么),例如字符 A 有數字 65,B 有 66,C 67 等等。 int(line-'A') 為 line=A 返回 0,為 B 返回 1,為 C 返回 2 等。

在上面的代碼中,您將 A、B、C、D 字符串作為控制台輸入。

您正在嘗試將這些字符串值添加到總和中。 因為atof(line.c_str())只將字符串值轉換為雙精度值。 例如:字符串“1”轉換為雙精度 1.0

相反,您應該添加與這些字符串相對應的價格值。 例如:如果輸入值為“A”則加 10.25 如果輸入值為“B”則加 15.75

使用 switch case 檢查用戶輸入,如下所示。 進一步使用 char 而不是 string,因為 A、B、C、D 和 T 都是字符。

#include <iostream>
#include <cstdlib>

int main() 
{
const double A =10.25, B = 15.75, C = 13.25, D = 9.75;
char line = ' ';
double sum = 0.0;
double price;

while (line != 'T') 
{
    std::cout << "please enter item ordered [A/B/C/D] or \"T\" to calculate total: " << std::endl;
    std::cout << "current sum : " << sum << std::endl;
    std::cin >> line;

    switch(line){
    case('A'):{

        sum += A;
        break;
        
    }
    case('B'):{

        sum += B;
        break;
        
    }
    case('C'):{

        sum += C;
        break;
        
    }
    case('D'):{

        sum += D;
        break;
        
    }
    case('T'):{
    
        break;
        
    }
    default:{

           break;
     }

    }
  
  }

    price = sum + (sum * .06);
    std::cout << "please pay this amount: $" << price << std::endl;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM