массивы — проблема с консолью C ++

Это может показаться простым вопросом, но я просто не могу понять, что заставляет мою консоль быстро открываться и закрываться? Я включил систему («PAUSE») в свою функцию main ().

Информация о программе:
Эта программа предназначена для системы билетов в кинотеатр, которая показывает, какие места в каком ряду доступны (как вы можете видеть для многомерных массивов).

Кто-нибудь знает, почему консоль не остается открытой? Я не получаю никаких сообщений об ошибках в компиляторе.

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

0

Решение

Потому что в вашей функции ReadPrices () вам не удается открыть файл values.dat и просто выйти из приложения (1)

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

Если вы используете VisualStudio, запустите приложение, CTL + F5 консоль останется.

Узнайте, как отлаживать ваше приложение, очень важно, пройдитесь по каждой строке кода, и вы легко сможете найти проблему для своего случая.

2

Другие решения

Я считаю, что exit () вызывается ReadPrices.
exit () не вызывает system («пауза»).

Возможные обходные пути:

  • станд :: at_exit ()
  • сделайте так, чтобы ваша функция ReadPrices возвращала логическое значение, чтобы отметить, если это успешно, вместо вызова выхода.
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector