Reputation: 155
This may seem like a simple question, bu tI just can't figure out what it is that makes my console rapidly open and close? I included system("PAUSE") in my main() function.
Program informaton: This program is for a cinema theater ticket system that shows which seats in which row are available (as you can see for the multidimensional arrays).
Anybody know why the console won't stay open? I'm not getting ANY error messages in the compiler.
#include <iostream>
#include <fstream>
using namespace std;
using std::ifstream;
void Init();
void Display();
void SellTicket();
void ReadPrices();
char tickets[15][20];
int revenue = 0;
int ticketsSold = 0;
int prices[15];
int main()
{
Init();
ReadPrices();
int choice;
cout << "Enter your choice: " << endl;
cout << "Press 1 for Display Chart" << endl;
cout << "Press 2 for sell ticket" << endl;
cout << "Press 3 for exit" << endl;
cin >> choice;
cout << endl;
switch(choice)
{
case 1:
Display();
break;
case 2:
SellTicket();
break;
case 3:
exit(0);
break;
}
system("PAUSE");
return 0;
}
void Init()
{
for (int row = 0; row < 15; row++)
{
for (int col = 0; col < 20; col++)
{
tickets[row][col]='*';
}
}
}
void Display()
{
cout <<"Seats:\t0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19"<<endl;
for (int row = 0; row < 15; row++)
{
cout << "Row"<< row << "\t";
for (int col = 0; col < 20; col++)
{
if(col < 10)
cout << tickets[row][col] << " ";
else
cout << tickets[row][col] << " ";
}
cout << endl;
cout << endl;
}
cout << "Total sold seats are: " << ticketsSold << endl;
cout << "Total revenue is: " << revenue << endl;
cout << endl;
}
void SellTicket()
{
int rowNo,seatNo;
//while(1)
//{
cout << "Enter Row Number:";
cin >> rowNo;
cout << endl;
cout << "Enter Seat Number:";
cin >> seatNo;
cout << endl;
if (tickets[rowNo][seatNo]=='#')
{
cout << "Ticket is not available " << endl;
cout << endl;
SellTicket();
}
else
{
tickets[rowNo][seatNo]='#';
revenue+=prices[rowNo];
ticketsSold+=1;
char c;
cout << "Would you like to sell another ticket? Press y for yes or n for no: ";
cin >> c;
cout << endl;
if (c=='y')
{
SellTicket();
}
}
//}
}
void ReadPrices()
{
int count=0;
ifstream indata;
int num;
indata.open("prices.dat");
if(!indata)
{
cerr << "Error: file could not be opened" << endl;
exit(1);
}
indata >> num;
while ( !indata.eof() )
{
prices[count++]=num;
//cout<< "The next number is " << num << endl;
indata >> num;
}
indata.close();
//cout << "End-of-file reached.." << endl;
}
Upvotes: 0
Views: 640
Reputation: 11181
I believe that exit() is called by ReadPrices. exit() doesn't call system("pause").
Possible workarounds:
Upvotes: 0
Reputation: 45410
Because in your ReadPrices() function, you fail to open prices.dat file and simply exit(1) application
indata.open("prices.dat");
if(!indata)
{
cerr << "Error: file could not be opened" << endl;
exit(1);
}
If you are using VisualStudio, run application, CTL + F5 the console will stay.
Learn how to debug your application is very important, step through each line of code and you can find the issue easily for your case.
Upvotes: 2