チャプター 2 の最後にあった 1 つの演習で行き詰まっています。この演習での問題は、論理的にループして入力を数回尋ねる方法がわからないことです。入力を 2 回要求するコードを書きました。以前は、本が提供するヘッダーを使用してそのタスクを簡単に実行していましたが、その方法はもう機能しませんでした。演習とコードを提供しますので、お役に立てれば幸いです。そして私の英語でごめんなさい。
あなた
が働いているのと同じ場所にクラスを持つプログラムを書いてください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;
}
また、理由は確かですが、収益は私にゴミ番号を与えます。お時間をいただきありがとうございます。