gpt4 book ai didi

c++ - 在 'while' 循环中清除累加器

转载 作者:行者123 更新时间:2023-11-28 02:04:47 27 4
gpt4 key购买 nike

这段代码需要做 4 件事:

  • 输入销售商品的数量
  • 输入每个销售项目的价格
  • 输入税率
  • 再次运行的选项

我已经完成了所有这些要求,但唯一的问题是代码重复出现。我将项目总值保存在“while”后测试循环内的累加器中。当程序循环时,它不会清除累加器,而是继续在我的旧总值之上添加任何新值。

(例如,如果我第一次运行该代码总共有 20 美元,而重复运行总共有 30 美元,它将显示我的总价为 50 美元)

#include <iostream>
#include <iomanip>
using namespace std;

int main(){

char answer = ' ';
int saleItems = 0;
double itemValue = 0.0;
double titemValue = 0.0;
double taxPerc = 0.0;

do {
cout << "How many sales items do you have? : ";
cin >> saleItems;

for (int x = 1; x <= saleItems; x += 1){
cout << "Enter in the value of sales item " << x << " : $";
cin >> itemValue;
titemValue += itemValue;
}

cout << endl << endl;
cout << "Enter in the sales tax percentage(Enter 10 for 10%): ";
cin >> taxPerc;
cout << endl << endl;

double saleTax = titemValue * (taxPerc / 100);
double grandTotal = titemValue + saleTax;

cout << fixed << setprecision(2);

cout << "********************************************" << endl;
cout << "******** S A L E S R E C E I P T ********" << endl;
cout << "********************************************" << endl;
cout << "** **" << endl;
cout << "** **" << endl;
cout << "** **" << endl;
cout << "** **" << endl;
cout << "** Total Sales $" << setw(9) << titemValue << " **" << endl;
cout << "** Sales Tax $" << setw(9) << saleTax << " **" << endl;
cout << "** ---------- **" << endl;
cout << "** Grand Total $" << setw(9) << grandTotal << " **" << endl;
cout << "** **" << endl;
cout << "** **" << endl;
cout << "********************************************" << endl << endl << endl;

cout << "Do you want to run this program again? (Y/N):";
cin >> answer;
answer = toupper(answer);
cout << endl << endl;

} while (answer == 'Y');


return 0;
}

最佳答案

您需要在循环内重置 titemValue 的值,但它是在循环外设置的。改变

char answer = ' ';
int saleItems = 0;
double itemValue = 0.0;
double titemValue = 0.0;
double taxPerc = 0.0;

do {
cout << "How many sales items do you have? : ";
cin >> saleItems;

char answer = ' ';
int saleItems = 0;
double itemValue = 0.0;
double titemValue; // (changed)
double taxPerc = 0.0;

do {
titemValue = 0.0; // (new)
cout << "How many sales items do you have? : ";
cin >> saleItems;

您不一定需要更改第一行,但将其值设置两次是没有意义的。不过,据我所知,如果您仍然保留双重初始化,某些编译器可能会将其优化掉。有些不会,例如默认调试配置设置中的 Visual Studio。

关于c++ - 在 'while' 循环中清除累加器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37954885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com