C++ 编程,编写一个收银员程序以计算购物清单的总价格,最终输入“ END”表示结束,求代码

编写一个收银员程序以计算购物清单的总价格。 您可以假定用户最多输入1000个项目。 每个项目都由itemName(不带空格的字符串),unitPrice(双精度)和数量(整数)组成。 输入字符串“ END”表示输入结束。 然后,使用默认的浮点数格式显示总价。 显示总价后,该程序允许用户查询一件特定商品的数量。
注意:使用double数据类型(NOT float)可以更好地近似浮点值。
如图所示。内容以英文为准。

#include <iostream>

#include <map>

#include <string>

using namespace std;

int main() {

  int Q;

  double U, sum = 0;

  string N, Find;

  map<string, map<double, int>> item;

  while (cin >> N) {

    if (N == "END")

      break;

    cin >> U >> Q;

    sum += U * Q;

    item.insert(make_pair(N, map<double, int> {{U, Q}}));

  }


  cout << sum << endl;

  cin >> Find;

  map<string, map<double, int>>::iterator iter;

  iter = item.find(Find);

  cout << (iter->second.begin()->second) << endl;

  return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-28
#include<iostream>
#include<cstring>
using namespace std;
struct Thing {
char item[20];
double unit;
int x;
double z;
} att[1000];
int comp(char a[],const char b[]) {
int i = 0;
while (a[i] || b[i]) {
if (a[i] - b[i++])return 0;
}
return 1;
}
int main() {
double sumz=0;
char s[20];
for (int i = 0;i < 1000;++i) {
cin >> s;
if (comp(s,"END\0") )break;
strcpy(att[i].item , s);
cin>>att[i].unit >> att[i].x;
att[i].z = att[i].x*att[i].unit;
sumz += att[i].z;
}
printf("%.2llf\n", sumz);
cin >> s;
for (int i = 0;i < 1000;++i) {
if (comp(att[i].item , s)) {
cout << att[i].x;
break;
}
}
return 0;
}