У меня проблемы с моей программой. Когда я запускаю его, он запрашивает у пользователя альбом, название, но затем он просто выходит из цикла без запроса цены и налога с продаж. Есть идеи, что происходит?
Это примерный прогон
Discounts effective for September 15, 2010
Classical 8%
Country 4%
International 17%
Jazz 0%
Rock 16%
Show 12%
Are there more transactions? Y/N
y
Enter Artist of CD:
Sevendust
Enter Title of CD:
Self titled
Enter Genre of CD:
Rock
enter price
Are there more transactions? Y/N
Thank you for shopping with us!
Код программы:
#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;
}