C ++控制台问题

时间:2012-11-18 01:42:15

标签: c++ arrays function multidimensional-array

这可能看起来像一个简单的问题,但是我无法弄清楚是什么让我的控制台快速打开和关闭?我在main()函数中包含了系统(“PAUSE”)。

节目信息: 此程序适用于影院影院票系统,该系统显示哪些座位可用(如您所见,可以看到多维阵列)。

有人知道为什么控制台不会保持打开状态吗?我在编译器中没有收到任何错误消息。

#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;
 }

2 个答案:

答案 0 :(得分:2)

因为在ReadPrices()函数中,您无法打开prices.dat文件并只退出(1)应用程序

  indata.open("prices.dat"); 
  if(!indata) 
  { 
    cerr << "Error: file could not be opened" << endl;
    exit(1);
  }

如果您使用的是VisualStudio,请运行应用程序CTL + F5,控制台将保留。

了解如何调试应用程序非常重要,逐步完成每行代码,您可以轻松找到适合您案例的问题。

答案 1 :(得分:0)

我相信readPrices会调用exit()。 exit()不会调用system(“pause”)。

可能的解决方法:

  • 的std :: at_exit()
  • 让你的ReadPrices函数返回一个布尔值来标记它是否成功,而不是调用exit。