c++入门练习2.41
C++ Primer Exercise 2.41
我被第2章末尾的1个练习卡住了!我对这个练习的问题是,我不知道如何在逻辑上循环询问几次输入!我写的代码要求两次输入!以前与书提供的标题,我做了这个任务很容易,但这种方式不再工作了。所以我会给你练习和代码,希望你能帮助我。很抱歉我的英语不好。
写一个程序,在你的main
函数所在的地方有一个类。
编写代码,读取具有相同书号的多个事务,并使用该书号计算每个事务。
我的代码
#include <iostream>
#include <string>
using namespace std;
//Data structure Code
struct Sales_Data
{
std::string bookNo;
unsigned unit_sold;
double revenue;
};
int main()
{
Sales_Data data1,data2; //Data wich will hold input
double price; //Price per book used to calculate total revenue
// Checking if there was data input of book number units sold and price
if (std::cin>>data1.bookNo>>data1.unit_sold>>price)
{
int cnt=1; //Start Counter
data1.revenue=data1.unit_sold*price;// data1 calculating total revenue from price and unit_sold
while (std::cin>>data2.bookNo>>data2.unit_sold>>price)
{
data2.revenue=data2.revenue*price;
//checking if book name is same
if (data1.bookNo == data2.bookNo)
{
++cnt; //Incrementing counter if they same
unsigned totalCnt=data1.unit_sold+data2.unit_sold;
double totalRevenue=data1.revenue+data2.revenue;
//Print out result
std::cout<<cnt<<data1.bookNo<<" "<<totalCnt<<" "<<totalRevenue<<" ";
getchar();
getchar();
getchar();
if (totalCnt != 0)
std::cout<<totalCnt/totalRevenue;
else
std::cout<<"(No Sales)"<<std::endl;
return 0;
}else{
std::cerr<<"Book numbers isn't same"<<std::endl;
return -1;
}
}
}
return 0;
}
也不知道为什么,但是收入给了我垃圾数字。感谢您的宝贵时间。
您在使用data2.revenue
之前是否初始化了它?
data2.revenue=data2.revenue*price;
初始化data2
,您可以:
struct Sales_Data
{
std::string bookNo;
unsigned unit_sold;
double revenue;
Sales_Data(std::string s = "", unsigned u = 0, double r = 0)
: bookNo(s), unit_sold(u), revenue(r) {}
};
或
Sales_Data data2 = { "a", 0, 0 };
或
Sales_Data data2;
data2.bookNo = "";
data2.unit_sold = 0;
data2.revenue = 0;
对于多个输入:
#include <map>
#include <string>
#include <iostream>
using namespace std
int main()
{
map<string, Sales_Data> count;
Sales_Data data;
while (cin >> data.bookNo >> data.unit_sold) { // <- this will allow you read multiple transactions
if (map.find(data.bookNo) != count.end()) {
count[data.bookNo].unit_sold += data.unit_sold;
// and do some other thing.
} else {
count[data.bookNo] = data.
}
}
return 0;
}
相关文章:
- 加速C++练习2.4
- C++ 独特指针练习的向量
- 转换器练习:跳过 if 语句和 if 语句
- 节目练习直播C++
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 练习多线程
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- C++ 随机数的字符串练习
- 进行 SFINAE 练习时编译错误
- 用 X 替换字符串中的字符C++练习
- 在C++中使用全局变量进行练习
- 是回文作业练习
- C++原理和练习练习-从输入值n中寻找素数
- 我在LeetCode练习时遇到了一些奇怪的错误
- 贝金纳C++练习解决方案的意外输出
- 练习循环和使用循环 1 次以及如何获取数组的最大值
- 对"车辆的 vtable"的未定义引用 - 面向对象的编程练习
- 用绳子练习
- 英里到千克转换器练习的小语法错误