-1

需要帮助编写课程程序。以下是张贴的说明:

第 1 步:程序应该有一个 FUNCTION,它显示一个屏幕,显示哪些座位可用,哪些座位已被占用。占用的座位应由# 符号表示,可用的座位应由* 符号表示。您的程序应该做的第一件事是将所有座位初始化为可用 (*) 并显示座位表。(提示:座位表应该是一个二维数组。)

第二步:礼堂的每一排都有不同的票价。所以第 0 行的票可能是每张 5.00,而第 1 行的票可能是每张 10.00。您的程序应该有一个 FUNCTION,它从名为 prices.dat 的输入文件中读取每一行的票价。每行的票价应存储在一维数组中。

第 3 步:您的程序应该有变量跟踪售出的门票总数和售出的所有门票的总收入。

第 4 步:您的程序应允许用户一次出售一张门票。用户应该能够出售任意数量的门票(为此您需要一个循环)。通过某种提示或菜单来执行此操作,询问用户是否愿意出售另一张票。如果需要,不要忘记验证输入数据。

为了允许用户出售门票,您的程序应该让用户输入他们想要出售的门票的行号和座位号。程序应该用这些信息做四件事:

  1. 它应该检查座位是否可用。如果座位被占用,程序不应允许用户出售门票。如果发生这种情况,请向用户打印一条消息,说明该票不可用,并提示用户查看他们是否想出售另一张票。

  2. 如果座位可用,则程序应通过在图表中该座位的位置放置一个占用符号 (#) 来更新座位表。

  3. 然后程序应查找已售座位的行价。您的程序应该有一个变量来跟踪总收入,每次销售后,售出的座位价格应该加到这个总数中。

  4. 您的程序应该有一个变量来跟踪售出的总票数。售票时您的程序应该做的下一件事是更新售出的总票数。

第 5 步:一旦用户完成售票,打印出更新的座位表,然后是售出的总门票以及这些门票产生的总收入。

注意:您需要在此程序中使用两个数组,一个用于座位表,一个用于存储每行的价格。您还需要使用两个函数:一个用于显示座位表,另一个用于读取每行价格数据并将其存储在数组中,其中包含每行的价格。如果您愿意,您可以使用其他功能,但它们不是必需的。

注意:本次运行的测试数据文件:prices.txt

10
10
10
9
9
9
8
8
8
7
7
7
6
6
6

我被困在第二步,上面写着:

“你的程序应该有一个函数,它从一个名为 prices.dat 的输入文件中读取每一行的票价。每一行的票价应该存储在一个一维数组中。”

我不知道如何创建输入文件或检查它们。到目前为止,这是我的代码。检查重复座位后,我停在我的案例“1”中。然后,我如何将该行与我想从数据文件中收取的价格相匹配?

#include <iostream>
#include <iomanip>
#include <string>
#include <istream>
#include <fstream>
using namespace std;

const int numberOfRow = 15;
const int numberOfCol = 20;

void print(char matrix[][20], int numberOfRow, int numberOfCol);

int main()
{
char matrix[numberOfRow][numberOfCol], seat[numberOfRow][numberOfCol];
char option;
int i, j;
int row,col;
int ticketsold = 0;
bool another =true;

for(i = 0; i < numberOfRow; i++)
    for(j = 0; j < numberOfCol; j++)
        matrix[i][j] = '*';

while(another)
{
    print( matrix, numberOfRow, numberOfCol );

    cout << "\nMenu:\n";
    cout << "1)  Buy ticket\n";
    cout << "2)  Total sell and exit\n\n";
    cout << "Enter your choice  : ";
    cin >> option;
    cout << endl << endl;

    switch (option)
    {
    case '1' :
        {
            cout << "Enter row: ";
            cin >> row;
            cout << "\nEnter seat: ";
            cin >> col;

            if( matrix[row][col] == '*')
                {
                    matrix[row][col] = '#';
                    ticketsold++;
                }
              else
                { 
                  cout << "Invalid seat choice";
                }


            //total revenue
        }

    /*case '2' :
        {
            another=false;
        }

    default :
        cout << "Invalid choice";*/

    }
}





system("pause");
}


void print(char matrix[][20], int numberOfRow, int numberOfCol)
{
int row, col, i, j;

cout << "* Seats available\n";
cout << "# Reserved Seats\n";
cout << "Seats:  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19" <<  endl;

for(i = 0; i < numberOfRow; i++)
{
    cout << "Row" << setw(3) << i;
    for(j=0; numberOfCol > j; j++)
        cout << setw(3) << matrix[i][j];

    cout << endl;
}
}
4

1 回答 1

0

下面的程序几乎与您的要求相似,除了从文件中读取输入。该程序将从控制台读取输入(用户必须为每一行键入价格。)同样,这不是您想要的,但我希望它会对您有所帮助。如果可能的话,很快我会发布另一个可以从文件中读取输入的程序。

#include <iostream>
#include <iomanip>
using namespace std;

int Show_Menu ();       
void Show_Chart ();     
const char FULL = '*';  
const char EMPTY = '#'; 
const int rows = 15;    
const int columns = 30; 
char map [rows][columns];
double price;
int total = 0;
int seat = 450;
int seat2 = 0;
int Quit = 1;
int main ()
{
const int Num_Rows = 15;
int price [Num_Rows];
int row2, column2, cost;
int answer;

    cout << "\t*********************************************************" << endl;
    cout << "\t*                                                       *" << endl;
    cout << "\t*    Welcome to our small town Theater                  *" << endl;
    cout << "\t*                                                       *" << endl;
    cout << "\t*********************************************************" << endl;
    cout << endl << endl;

    for (int count = 0; count < rows; count++)
        {
            cout << "Please enter the price for row " << (count + 1) << ": ";
                cin >> price [count];

        }
    for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < columns; j++)
                map [i][j] = EMPTY;
        }
int choice;
    do
    {
        choice = Show_Menu();
        switch (choice)
        {
            case 1:
                cout << "View Seat Prices\n\n";

                for (int count = 0; count < rows; count++)
                {
                    cout << "The price for row " << (count + 1) << ": ";
                    cout << price [count] << endl;
                }
                break;
            case 2:
                cout << "Purchase a Ticket\n\n";
                do 
                {
                    cout << "Please select the row you would like to sit in: ";
                    cin >> row2;
                    cout << "Please select the seat you would like to sit in: ";
                    cin >> column2;
                    if (map [row2] [column2] == '*')
                        {
                            cout << "Sorry that seat is sold-out, Please select a new seat.";
                            cout << endl;
                        }
                    else 
                    {
                        cost = price [row2] + 0;
                        total = total + cost;
                        cout << "That ticket costs: " << cost << endl;
                        cout << "Confirm Purchase? Enter (1 = YES / 2 = NO)";
                        cin >> answer;
                        seat = seat - answer;
                        seat2 += answer;

                        if (answer == 1)
                        { 
                            cout << "Your ticket purchase has been confirmed." << endl;
                            map [row2][column2] = FULL;
                        }
                        else if (answer == 2)
                        {
                            cout << "Would you like to look at another seat? (1 = YES / 2 = NO)";
                            cout << endl;
                            cin >> Quit;
                        }

                        cout << "Would you like to look at another seat?(1 = YES / 2 = NO)";
                        cin >> Quit;
                    }
                }
                while (Quit == 1);

                break;
            case 3:
                cout << "View Available Seats\n\n";
                Show_Chart ();
                break;
            case 4:
                cout << "Total ticket sales: "<<total<<".\n\n";
                break;
            case 5:
                cout << "quit\n";
                break;
            default : cout << "Error input\n";
        }
    } while (choice != 5);
return 0;
}
//********************************************************************************
//********************************************************************************
//**                                                                            **
//**                              Define Functions.                          **
//**                                                                            **
//********************************************************************************
//********************************************************************************

int Show_Menu()
{
    int MenuChoice;
        cout << endl << endl;
        cout << " \tMAIN MENU\n";
        cout << " 1. View Seat Prices.\n";
        cout << " 2. Purchase a Ticket.\n";
        cout << " 3. View Available Seats.\n";
        cout << " 4. View Ticket Sales.\n";
        cout << " 5. Quit the program.\n";
        cout << "_____________________\n\n";
        cout << "Please enter your choice: ";
        cin >> MenuChoice;
        cout << endl << endl;
    return MenuChoice;
}

void Show_Chart ()
{
    cout << "\tSeats" << endl;
    cout << "   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30\n";
        for (int count = 0; count < 15; count++)
        {
            cout << endl << "Row " << (count + 1);
            for (int count2 = 0; count2 < 30; count2++)
            {
                cout << " " <<  map [count] [count2];
            }
        }
            cout << endl;
}
于 2016-10-17T12:43:55.250 回答