gpt4 book ai didi

c++ - 为什么我有一个 '=' 符号输出和 2 个笑脸而不是正确的输出? C++

转载 作者:行者123 更新时间:2023-11-27 23:11:26 24 4
gpt4 key购买 nike

这是一个显示变化的更新,详情如下。 这是输出快照的链接 https://dl.dropboxusercontent.com/u/34875891/wrongoutput.PNG

#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>

using namespace std;

//create HotelRoom class

class HotelRoom
{
private:
char* ptr_guest;
char room_number[3];
int room_capacity;
int occupancy_status;
double daily_rate;

public:
HotelRoom(char roomNumber[], int roomCapacity, double roomRate, char* ptr_name, int occupancyStatus);
~HotelRoom();
void Display_Number();
void Display_Guest();
int Get_Capacity();
int Get_Status();
double Get_Rate();

int Change_Status(int);
double Change_Rate(double);
};
HotelRoom::HotelRoom(char roomNumber[], int roomCapacity, double roomRate, char* ptr_name, int occupancyStatus)
{
strcpy(room_number, roomNumber);
room_capacity = roomCapacity;
daily_rate = roomRate;
ptr_guest = new char[strlen(ptr_name) + 1];
strcpy(ptr_guest, ptr_name);
occupancy_status = occupancyStatus;
}
HotelRoom::~HotelRoom()
{

cout << endl;
cout << "Destructor Executed";
cout << endl;
delete [] ptr_guest;
}
void HotelRoom::Display_Guest()
{
char* temp = ptr_guest;
while(*temp != '\0')
cout << *temp++;
}
void HotelRoom::Display_Number()
{
cout << room_number;
}
int HotelRoom::Get_Capacity()
{
return room_capacity;
}
int HotelRoom::Get_Status()
{
return occupancy_status;
}
double HotelRoom::Get_Rate()
{
return daily_rate;
}
int HotelRoom::Change_Status(int roomStatus)
{
if(roomStatus <= room_capacity )
{
occupancy_status = roomStatus;
return occupancy_status;
}
else
occupancy_status = -1;


}
double HotelRoom::Change_Rate(double newRate)
{
daily_rate = newRate;
return daily_rate;
}

int main()
{
cout << setprecision(2)
<< setiosflags(ios::fixed)
<< setiosflags(ios::showpoint);

//Declare variables to hold data

char roomNumber[3] = {'1','3','\0'};

char guestName[20];

double roomRate = 89.00;

int roomCapacity = 4;
int occupancyStatus = 0;
int status;
int checkOut;
int newCustomer;

//Ask for user input
cout << "What is the guest's name: ";
cin.getline(guestName, 20);

cout << endl;
cout << "How many guests will be staying in the room: ";
cin >> status;

HotelRoom HotelRoom1(roomNumber, roomCapacity, roomRate, guestName, status);

//Display Rooom information

cout << endl;
cout << endl;
if(HotelRoom1.Change_Status(status))
{
cout << endl;
cout << "Guest's Name: ";
HotelRoom1.Display_Guest();
cout << endl;
cout << endl;
cout << "The capacity of this room is " << HotelRoom1.Get_Capacity() << endl;
cout << endl;
cout << "There are " << HotelRoom1.Get_Status() << " guests staying in the room";
}

cout << endl;
cout << endl;
cout << "Your room number is " << HotelRoom1.Display_Number();
cout << endl;
cout << endl;
cout << "The rate for this room is " << HotelRoom1.Get_Rate();
cout << endl;
cout << endl;

//chech this guest out?

cout << "Check this guest out? ('1 = yes' '0' = no) ";
cin >> checkOut;

switch(checkOut)
{
case 1:
HotelRoom1.Change_Status(0);
for(int i = 0; i < 3; ++i )
{
cout << endl;
}
cout << "You have checked out of room number " << HotelRoom1.Display_Number();
cout << endl;
cout << endl;
cout << "The capacity of this room is " << HotelRoom1.Get_Capacity();
cout << endl;
cout << endl;
cout << "There are currently " << HotelRoom1.Get_Status() << " occupants";
cout << endl;
cout << endl;
cout << "The rate of this room was " << HotelRoom1.Get_Rate();
break;
}

//check in new guest?

cout << endl;
cout << endl;
cout << "Check in new guest? ('1 = yes' '0' = no) ";
cin >> newCustomer;
for(int i = 0; i < 3; ++i )
{
cout << endl;
}
switch (newCustomer)
{
case 1:
HotelRoom HotelRoom2(roomNumber, roomCapacity, roomRate, guestName, status);
HotelRoom1.Change_Rate(175.00); //Change rate of room

cout << endl;
cout << "What is the guest's name: ";
cin.getline(guestName, 20);
cout << endl;
cout << "How many guests will be staying in the room: ";
cin >> status;
cout << endl;
cout << endl;

//Display new guest information

if(HotelRoom1.Change_Status(status))
{
cout << endl;
cout << endl;
cout << "The capacity of this room is " << HotelRoom1.Get_Capacity() << endl;
cout << endl;
cout << "There are " << HotelRoom1.Get_Status() << " guests staying in the room";
}

cout << endl;
cout << endl;
cout << "Your room number is " << HotelRoom1.Display_Number();
cout << endl;
cout << endl;
cout << "The rate for this room is " << HotelRoom1.Get_Rate();
cout << endl;
cout << endl;

break;
}
cout << endl;


system("PAUSE");
return 0;
}

这是一个显示变化的更新,详情如下。 这是输出快照的链接 https://dl.dropboxusercontent.com/u/34875891/wrongoutput.PNG

最佳答案

char HotelRoom::Display_Guest()
{
cout << ptr_guest;
}

string HotelRoom::Display_Number()
{
cout << room_number;
}

int HotelRoom::Change_Status(int roomStatus)
{
if(roomStatus <= room_capacity )
{
occupancy_status = roomStatus;
return occupancy_status;
}
else
occupancy_status = -1;
}

这些函数声称返回值。前两个不是,最后一个不是在某些条件下。调用前两个是未定义的行为。使用 roomStatus > room_capacity 调用 Change_Status 也是未定义的行为。

代码可能还有其他问题,但房间里的大象是未定义的行为。在存在未定义行为时进行任何其他调试在理论上都是浪费时间。

关于c++ - 为什么我有一个 '=' 符号输出和 2 个笑脸而不是正确的输出? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com