我的程序有问题。当我运行它时,它会询问用户专辑和标题,但随后它只是退出循环而不询问价格和销售税。有什么想法吗?
这是一个示例运行
折扣于 2010 年 9 月 15 日生效 古典 8% 国家 4% 国际 17% 爵士乐 0% 摇滚 16% 显示 12% 有没有更多的交易?是/否 是的 输入 CD 艺术家: 七尘 输入 CD 标题: 自称 输入 CD 类型: 岩石 输入价格 有没有更多的交易?是/否 感谢您与我们购物!
程序代码:
#include <iostream>
#include <string>
using namespace std;
int counter = 0;
string discount_tiles[] = {"Classical", "Country", "International", "Jazz", "Rock", "Show"};
int discount_amounts[] = {8, 4, 17, 0, 16, 12, 14};
string date = "September 15, 2010";
// Array Declerations
//Artist array
char** artist = new char *[100];
//Title array
char** title = new char *[100];
//Genres array
char** genres = new char *[100];
//Price array
double* price[100];
//Discount array
double* tax[100];
// sale price array
double* sale_price[100];
//sale tax array
double* sale_tax[100];
//cash price array
double* cash_price[100];
//Begin Prototypes
char* getArtist();
char* getTitle();
char* getGenre();
double* getPrice();
double* getTax();
unsigned int* AssignDiscounts();
void ReadTransaction (char ** artist, char ** title, char ** genre, float ** cash, float & taxrate, int albumcount);
void computesaleprice();
bool AreThereMore ();
//End Prototypes
bool areThereMore ()
{
char answer;
cout << "Are there more transactions? Y/N" << endl;
cin >> answer;
if (answer =='y' || answer =='Y')
return true;
else
return false;
}
char* getArtist()
{
char * artist= new char [100];
cout << "Enter Artist of CD: " << endl;
cin.getline(artist,100);
cin.ignore();
return artist;
}
char* getTitle()
{
char * title= new char [100];
cout << "Enter Title of CD: " << endl;
cin.getline(title,100);
cin.ignore();
return title;
}
char* getGenre()
{
char * genre= new char [100];
cout << "Enter Genre of CD: " << endl;
cin.getline(genre,100);
cin.ignore();
return genre;
}
double* getPrice()
{
//double* price = new double();
//cout << "Enter Price of CD: " << endl;
//cin >> *price;
//return price;
double p = 0.0;
cout<< "enter price" << endl;
cin >> p;
cin.ignore();
double* pp = &p;
return pp;
}
double* getTax()
{
double* tax= new double();
cout << "Enter local sales tax: " << endl;
cin >> *tax;
return tax;
}
int findDiscount(string str){
if(str.compare(discount_tiles[0]) == 0)
return discount_amounts[0];
else if(str.compare(discount_tiles[0]) == 0)
return discount_amounts[1];
else if(str.compare(discount_tiles[0]) == 0)
return discount_amounts[2];
else if(str.compare(discount_tiles[0]) == 0)
return discount_amounts[3];
else if(str.compare(discount_tiles[0]) == 0)
return discount_amounts[4];
else if(str.compare(discount_tiles[0]) == 0)
return discount_amounts[5];
else{
cout << "Error in findDiscount function" << endl;
return 0;
}
}
void computesaleprice()
{
/** fill in array for all purchases **/
for( int i=0; i<=counter; i++){
double temp = *price[i];
temp -= findDiscount(genres[i]);
double* tmpPntr = new double();
tmpPntr = &temp;
sale_price[i] = tmpPntr;
delete(&temp);
delete(tmpPntr);
}
}
void printDailyDiscounts(){
cout << "Discounts effective for " << date << endl;
for(int i=0; i < 6; i++){
cout << discount_tiles[i] << "\t" << discount_amounts[i] << "%" << endl;
}
}
//Begin Main
int main ()
{
for( int i=0; i<100; i++){
artist[i]=new char [100];
title[i]=new char [100];
genres[i]=new char [100];
price[i] = new double(0.0);
tax[i] = new double(0.0);
}
// End Array Decleration
printDailyDiscounts();
bool flag = true;
while(flag == true){
if(areThereMore() == true){
artist[counter] = getArtist();
title[counter] = getTitle();
genres[counter] = getGenre();
price[counter] = getPrice();
//tax[counter] = getTax();
//counter++;
flag = true;
}
else {
flag = false;
}
}
//compute sale prices
//computesaleprice();
cout << "Thank you for shopping with us!" << endl;
return 0;
}
//End Main
/**
void ReadTransaction (char ** artist, char ** title, char ** genre, float ** cash, float & taxrate, int albumcount)
{
strcpy(artist[albumcount],getArtist());
strcpy(title[albumcount],getTitle());
strcpy(genre[albumcount],getGenre());
//cash[albumcount][0]=computesaleprice();???????
//taxrate=getTax;??????????????
}
*
* */
unsigned int * AssignDiscounts()
{
unsigned int * discount = new unsigned int [7];
cout << "Enter Classical Discount: " << endl;
cin >> discount[0];
cout << "Enter Country Discount: " << endl;
cin >> discount[1];
cout << "Enter International Discount: " << endl;
cin >> discount[2];
cout << "Enter Jazz Discount: " << endl;
cin >> discount[3];
cout << "Enter Pop Discount: " << endl;
cin >> discount[4];
cout << "Enter Rock Discount: " << endl;
cin >> discount[5];
cout << "Enter Show Discount: " << endl;
cin >> discount[6];
return discount;
}
/**
char ** AssignGenres ()
{
char ** genres = new char * [7];
for (int x=0;x<7;x++)
genres[x] = new char [20];
strcpy(genres [0], "Classical");
strcpy(genres [1], "Country");
strcpy(genres [2], "International");
strcpy(genres [3], "Jazz");
strcpy(genres [4], "Pop");
strcpy(genres [5], "Rock");
strcpy(genres [6], "Show");
return genres;
}
**/
float getTax(float taxrate)
{
cout << "Please enter store tax rate: " << endl;
cin >> taxrate;
return taxrate;
}