&引用;出售“U seat()”;函数被跳过 我在C++网络课程的最后一部分,和我的一个实验室有困难。实验室描述了编写一个程序,让用户知道剧院的可用门票和已售出门票

&引用;出售“U seat()”;函数被跳过 我在C++网络课程的最后一部分,和我的一个实验室有困难。实验室描述了编写一个程序,让用户知道剧院的可用门票和已售出门票,c++,function,class,C++,Function,Class,代码的输出应为: 机管局101售出 AA 102可用 但是,我继续收到以下输出: AA 101 AA 102可用 在VS代码中通过调试器运行程序时,我注意到当“sell_seat”(sell_seat)函数计算“if(!myticket1.is_sell())”时跳过了它 删除“myticket1.is_sell()”前面的感叹号可以提供正确的输出,但不能解决问题 我的代码哪里出错了 实验室的先决条件: 该类应包含行、座位号和是否 这张票有没有卖出去。定义一个构造函数,该构造函数接受 参数行和座

代码的输出应为:

机管局101售出

AA 102可用

但是,我继续收到以下输出:

AA 101

AA 102可用

在VS代码中通过调试器运行程序时,我注意到当“sell_seat”(sell_seat)函数计算“if(!myticket1.is_sell())”时跳过了它

删除“myticket1.is_sell()”前面的感叹号可以提供正确的输出,但不能解决问题

我的代码哪里出错了

实验室的先决条件:

该类应包含行、座位号和是否 这张票有没有卖出去。定义一个构造函数,该构造函数接受 参数行和座位号,并在中将销售状态设置为false 构造函数初始化部分

包括以下成员功能:

A function to check if the ticket has been sold with this signature: bool is_sold();
A function to update the ticket status to sold with this signature:  void sell_seat();
A function to print the row, seat number, and sold status delimited by a space with this signature: string print_ticket();
ShowTicket类

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

class ShowTicket {
public:
    string row;
    string seatNum;
    string status;

    bool is_sold();
    void sell_seat();
    string print_ticket();

    ShowTicket(string sRow, string Num) {
        row = sRow;
        seatNum = Num;
    }
};

bool ShowTicket::is_sold() {
    if (row == "AA" && seatNum == "101") {
        return true;
    }
    else {
        return false;
    }
}
void ShowTicket::sell_seat() {
    if (is_sold()) {
        status = "sold";
    }
    else {
        status = "available";
    }
}
string ShowTicket::print_ticket() {
    return row + " " + seatNum + " " + status;
}
#包括
#包括
使用名称空间std;
头等舱票{
公众:
字符串行;
串珠木;
字符串状态;
布尔已售出();
无效销售座位();
字符串print_ticket();
ShowTicket(字符串sRow,字符串Num){
行=sRow;
seatNum=Num;
}
};
bool ShowTicket::出售了吗(){
如果(行==“AA”&&seatNum==“101”){
返回true;
}
否则{
返回false;
}
}
作废票::卖出座位(){
如果(出售了吗()){
status=“已售出”;
}
否则{
status=“可用”;
}
}
字符串ShowTicket::print_ticket(){
返回行+“”+seatNum+“”+状态;
}
主要功能

int main() {
    ShowTicket myticket1("AA", "101");
    ShowTicket myticket2("AA", "102");

    // The sell_seat function is skipped for myticket1, causing the issue
    if (!myticket1.is_sold()) {
        myticket1.sell_seat();
    }
    if (!myticket2.is_sold()) {
        myticket2.sell_seat();
    }

    cout << myticket1.print_ticket() << endl;
    cout << myticket2.print_ticket() << endl;

    return 0;
}
intmain(){
展示票myticket1(“AA”、“101”);
展示票myticket2(“AA”、“102”);
//myticket1跳过了sell_seat功能,导致出现问题
如果(!myticket1.is_sell()){
myticket1.sell_seat();
}
如果(!myticket2.is_sell()){
myticket2.sell_seat();
}

cout对于第一个if语句,函数永远不会输入,因为is\u sell函数返回true。您使用的是not运算符,因此该语句的计算结果为false

因此状态永远不会更新,这就是为什么它是空的

bool ShowTicket::is_sold() {
   return (row == "AA" && seatNum = "101"); //simplified
}

//even better, you can use the is sold to call the function that checks the condition

bool ShowTicket::is_sold() {
   bool sold = false; //will return false if the condition is not met.
   if (row == "AA" && seatNum = "101") {
       sell_seat();
       sold = true;
   }
   return sold;
}

//Lastly, update the sell_seat function to do the granular task of selling the ticket

void sell_seat() {
    status = "sold";
    std::cout << "Sold ticket#: " << seatNum << std::endl;
}
bool ShowTicket::出售了吗(){
return(row==“AA”&&seatNum=“101”);//简化
}
//更好的是,您可以使用is sell调用检查条件的函数
bool ShowTicket::出售了吗(){
bool sell=false;//如果不满足条件,将返回false。
如果(行==“AA”&&seatNum=“101”){
出售座位();
售出=真实;
}
已售出的退货;
}
//最后,更新sell_seat函数,以执行售票的精细任务
空售座位(){
status=“已售出”;

std::cout在调试会话中,您使用调试器单步执行代码并观察变量,调试会话的结果是什么?是否有任何理由将座位号作为字符串?由于座位有两种状态,即已售出和可用,您可以将状态设置为
bool
类型。在我看来,它类似于
ShowTicket
co构造函数将行和座位号设置为AA和101,因此
if(row==“AA”&&seatNum==“101”)的结果
是完全可以预测的。我认为你需要在这里更好地解释你的意图。想想你的
sell_seat
功能中的逻辑,以及出售座位的后遗症。在大多数现实场景中,如果座位已经售出(已经售出),您不能出售。如果您的座位可用,那么出售座位会将其状态更改为“已出售”,或者会吗?带着我的狗散步后,我意识到我把事情复杂化了。明天我会尝试一下您的建议,因为我有点累:请查看您的
seatNum=“101”
在您的答案中。可能有输入错误。