Write a program that can be used by a small theater to sell tickets for performa
ID: 3919621 • Letter: W
Question
Write a program that can be used by a small theater to sell tickets for performances. The theater’s auditorium has 15 rows of seats, with 30 seats in each row. The program should display a screen that shows which seats are available and which are taken. For example, the following screen shows a chart depicting each seat in the theater. Seats that are taken are represented by an * symbol, and seats that are available are represented by a # symbol. Seats 123456789012345678901234567890 Row 1 ***###***###*########*****#### Row 2 #####***********#####*****#### Row 3 ***###*******########*****#### Row 4 *#####***************##******* Row 5 *****#####************######## Row 6 ################**********#### Row 7 #####*********************#### Row 8 **************###***###*###### Row 9 ######***###*########*****#### Row 10 ***###***###*################# Row 11 ***#***############*********** Row 12 ***###*******########*****#### Row 13 ###**********###########*##### Row 14 ############################## Row 15 ############################## Here is a list of tasks this program must perform: - When the program begins, it should ask the user to enter the seat prices for each row. The prices can be stored in a separate array. (20 points) - Once the prices are entered, the program should display a seating chart similar to the one shown above. The user may enter the row and seat numbers for tickets being sold. Every time a ticket or group of tickets is purchased, the program should display the total ticket prices and update the seating chart. (20 points) - The program should keep a total of all ticket sales. The user should be given an option of viewing this amount. (20 points) - The program should also give the user an option to see a list of how many seats have been sold, how many seats are available in each row, and how many seats are available in the entire auditorium. (30 points) Input Validation: When tickets are being sold, do not accept row or seat numbers that do not exist. When someone requests a particular seat, the program should make sure that seat is available before it is sold. (10 points)
Explanation / Answer
#include<iostream>
#include<string>
#include<iomanip>
#include<sstream>
using namespace std;
int main(){
char data[15][30];
for (int i = 0; i<15; i++){
for (int j = 0; j<30; j++){
data[i][j] = '#';
}
}
int totalsold = 0;
int totalavailable = 450;
int available[15];
for (int i = 0; i<15; i++){
available[i] = 30;
}
double prices[15];
double totalsale = 0;
for (int i = 0; i<15; i++){
cout << "Enter price for row " << (i+1) << ": $";
cin >> prices[i];
}
cout << setw(10) << " " << "012345678901234567890123456789 ";
for (int i = 0; i<15; i++){
stringstream ss;
ss << "Row " << (i+1);
cout << left << setw(10) << ss.str();
for (int j = 0; j<30; j++){
cout << data[i][j];
}
cout << endl;
}
while(true){
cout << "1.Sell Ticket ";
cout << "2.Display Number of seats sold ";
cout << "3.Display total Sales ";
cout << "4.Display total avaialble seats ";
cout << "5.Display rowwise avaialbilty of seats ";
cout << "6.Display seating chart ";
cout << "7.Quit ";
cout << "Enter choice:";
int n;
cin >> n;
if (n == 7)
break;
else if (n == 1){
cout << "Enter number of tickets:";
int n1;
cin >> n1;
double price = 0;
for (int i = 0; i<n1; i++){
while(true){
cout << "Enter row:";
int a,b;
cin >> a;
cout << "Enter column:";
cin >> b;
if (a < 1 || a > 15 || b < 1 || b > 30){
cout << "Invaild row or/and column data ";
}
else if (data[a-1][b-1] == '*'){
cout << "Seat Occupied ";
}
else {
data[a-1][b-1] = '*';
price = price + prices[a-1];
totalsale = totalsale + price;
totalsold++;
available[a-1]--;
totalavailable--;
break;
}
}
}
cout << "Total Cost :$" << fixed << setprecision(2) << price << endl;
}
else if (n == 2){
cout << "Total Seats Sold: " <<totalsold << endl;
}
else if (n == 3){
cout << "Total Sales: $" << fixed << setprecision(2) << totalsale << endl;
}
else if (n == 4){
cout << "Total Seats Available: " << totalavailable << endl;
}
else if (n == 5){
for (int i = 0; i<15; i++){
cout << "Row " << (i+1) << " Available:" << available[i] << endl;
}
}
else if (n == 6){
cout << setw(10) << " " << "012345678901234567890123456789 ";
for (int i = 0; i<15; i++){
stringstream ss;
ss << "Row " << (i+1);
cout << left << setw(10) << ss.str();
for (int j = 0; j<30; j++){
cout << data[i][j];
}
cout << endl;
}
}
}
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.