我正在做一个我有问题的作业问题.如果你不方便协助解决作业问题,我应该说我的导师鼓励我们在完全难倒的时候在这个网站上寻求帮助.另外,我已经完成了自己的任务的基本部分,现在我正在做一个可选的挑战问题.无论如何,关于问题!
作为一般的OOP和C++的新手,我无法理解"this->"运算符.我们没有在课堂上介绍它,但我已经在其他地方看到了它,我猜它是如何被使用的.
对于作业,我必须创建一个基于控制台的Tic-Tac-Toe游戏.只有作业的挑战部分需要我们创建一个AI对手,而我们没有获得任何额外的功劳来应对挑战,我只是想知道如何去做.我正在研究像minimax和游戏树这样的东西,但是现在我只是想创建一个"选择一个随机的,开放的"功能.
我有一个名为TicTacToe的课程,它基本上就是整个课程.我将在下面发布与问题相关的部分,但是给我一个错误的部分是这个子程序:
void TicTacToe::makeAutoMove(){
srand(time(NULL));
int row = rand() % 3 + 1;
int col = rand() % 3 + 1;
if(this->isValidMove(row, col)){
this->makeMove(row, col);
}else{
this->makeAutoMove();
}
}
Run Code Online (Sandbox Code Playgroud)
这个函数唯一要做的就是在板上移动,假设它是开放的.董事会的设置如下:
char board[4][4];
Run Code Online (Sandbox Code Playgroud)
当我打印它时,它看起来像:
1 2 3
1 - - -
2 - - -
3 - - -
Run Code Online (Sandbox Code Playgroud)
问题在于,有时计算机会进行移动,因为函数的随机性,我会发现一个难以追踪的错误.我认为这是一个段错误,但我无法分辨,因为我无法在调试器中复制它.
我认为"this->"运算符用作指针,如果指针为NULL并且它被访问它可能会给我这个问题.它是否正确?有没有办法来解决这个问题?
我理解这对社区的许多成员来说可能是一个非常低级别的问题,但我会感谢你的帮助,只要它没有附带关于这是多么微不足道的讽刺言论,或者我必须是多么愚蠢.我在学习,这意味着我有时会遇到一些愚蠢的问题.
如果它有帮助,这里有更多我的.cpp文件:
TicTacToe::TicTacToe()
{
for(int row = 0; row < kNumRows; row++){
for(int col = 0; col < kNumCols; col++){
if(col == 0 && …
Run Code Online (Sandbox Code Playgroud) <Script>
function getExperience()
{
var xp = document.getElementById('txt_XP').value;
document.getElementByID("plank").innerHTML = xp/30;
}
</Script>
Run Code Online (Sandbox Code Playgroud)
所以这是我的代码,我的问题是我似乎无法在id的planl,oakPlank,teakPlank和mahoganyPlank的表中写入数据.我想我可能会给那些曾经做过这类事情的人犯一个明显的错误,但我似乎无法抓住它.非常感谢任何帮助,这是我的表格的片段,如果它有帮助:
<tr>
<td>Plank</td>
<td id="plankXP">30</td>
<td id="plank">0</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
编辑:我没有意识到这可能是相关的,我的坏.这是我用来获取输入的表单,在发出警报后查看它是否可以检索XP,它运行正常:
<form name="experience" id="experience_frm" action="#">
Experience: <input type="text" name="XP" id="txt_XP"/>
<input type="submit" value="Go" onclick="getExperience();"/>
</form>
Run Code Online (Sandbox Code Playgroud) 我正在为我的C++课做一个家庭作业,并且我正在尝试做我认为相当简单的数学函数,但我感到难过,因为它没有返回我期望它返回的东西.基本上,这只是一个APR问题,我正试图从APR转换为月度利息.我的导师给了我们这个公式来计算:
所以这是我正在使用的代码.我将annualInterest与monthlyInterest计算分开,因为我确定我没有犯一个简单的错误:
double balance, payment, APR;
cin >> balance >> payment >> APR;
const double yearlyInterest = (APR / 100) + 1;
const double monthlyInterest = pow(yearlyInterest, 1/12)
Run Code Online (Sandbox Code Playgroud)
使用输入1000,100和19.9,我在物理计算器中得到的结果,以及我所期望的结果:
但是调试器给我的结果是:
所以基本上,我问为什么我的月度利息是不正确的?我不相信这是一个类型问题,因为pow()将输出一个double.另外,我不认为十进制应该溢出双重类型,它不是那么大,我只需要几位精度.所以,如果有人能帮我确定我犯的错误,我将不胜感激.
旁注:我已经包括以下内容.我使用而不是因为它是我学到的东西.如果这是一个问题,我可以改变它.
#include <iostream>
#include <cmath>
Run Code Online (Sandbox Code Playgroud)