0
我目前正在編寫一個程序,允許用戶輸入一個方向並沿着座標平面移動一個機器人。我是C++的新手,所以我得到的一些錯誤讓我感到困惑。有人可以解釋我的錯誤嗎?C++函數參數和結構錯誤
當我調用函數init_room時,它表示參數太少。當我調用init_robot時會發生同樣的事情。他們都有指針參數。我將如何解決這個問題?
當我調用函數在主函數中移動時,它說表達式必須是可修改的值。這是什麼意思?
感謝您的幫助!
#include <iostream>
using namespace std;
typedef struct room {
int x;
int y;
};
typedef struct robot {
room *current_room;
int current_x;
int current_y;
int model;
};
void init_robot(robot *r) {
r->current_room->x;
r->current_room->y;
r->current_x = 0;
r->current_y = 0;
//Assign model number
r->model;
}
void init_room(room *r) {
cin >> r->x;
cin >> r->y;
}
char move(robot *r, int direction) {
if (direction == 'N' || direction == 'n')
{
r->current_y + 1;
}
else if (direction == 'S' || direction == 's')
{
r->current_y - 1;
}
else if (direction == 'E' || direction == 'e')
{
r->current_x + 1;
}
else if (direction == 'W' || direction == 'w')
{
r->current_x - 1;
}
else
{
direction = 'x';
return direction;
}
int main() {
char direction;
char restart;
cout << "What size would you like the room to be?";
room rr;
init_room();
robot r; initrobot();
while (true) {
cout << "Your robot is in a room with the dimensions (" << rr.x << "," << rr.yy << "). at location (" << r.current_x << "," << r.current_y << ")." << endl;
cout << "What direction would you like to move? N (North), E (east), S(South), or W(West)?";
do {
cin >> direction;
move(direction) = direction;
if (direction = 'x') {
cout << "Invalid direction. Please enter N, E, S, or W.";
}
while (direction == 'x');
cout << "Current position is" << endl;
// if (r.current_x <= rr.x && r.current_y <= rr.y)
// {
// cout << "Error, your robot is out of the room bounds. Your robot has exited the room. Would you like to enter another room? Y or N?";
cin >> restart;
//} while (restart == 'Y' || restart == 'y');
}
system("pause");
return 0;
}
謝謝你們的幫助! @GaryMakin我肯定會研究一下右值是什麼。謝謝你的提示。 – starlight