我刚刚开始使用C++(字面意思是我的第二天),并且我被分配来计算各种数据类型的范围,有符号和无符号.问题是,我的学校的工作方式我不会到数学部分,他教我们另外几个月的公式.他说要从那些已经完成数学课程的人那里得到这些信息,但他们都表示他们会在他们有笔记的家里从事这项工作.所以现在我和谷歌一起留在了黑暗中,而且它的答案是不确定的,所以我问你,堆栈溢出的聪明人.
获取数据类型范围的公式是什么?我发现一个有效但不适用于其他的INT,他希望我们计算的是:char,short,long和long long.他还想要那些4的无符号版本以及INT.
我们已经拥有每种数据类型的位和字节大小.
以下是我的INT范围布局:
printf ("\nThe range of int is: %f\n", pow(2, (sizeof(int) * CHAR_BIT) -1));
Run Code Online (Sandbox Code Playgroud) 问这个问题让我很难过,我知道答案,但我只是完全消错了.
我的程序是一个显示损坏的简单程序.我所需要的就是能够通过功能攻击来调用我的类敌人和boss.所以基本上enemy.Attack()或能够像这样调用enemy.Attack(30)并使输出看起来不同.
这是需要发生的事情:
enemy.Attack() 输出: 10
enemy.Attack(30) 输出: 30
每次我尝试空括号版本时,我都会收到错误"函数不带0参数"
class Enemy
{
public:
Enemy();
void Attack();
private:
int m_Damage;
};
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include "enemy.h"
Enemy::Enemy() : m_Damage(10)
{}
void Enemy::Attack(int damage)
{
m_Damage = damage;
std::cout << "Damage: " << m_Damage << std::endl;
}
Run Code Online (Sandbox Code Playgroud) 目前我正在尝试同时进行两次拍卖实例,但是当我创建一个新对象时,它与之前的对象完全相同.
以下是创建新对象的代码:
AuctionSell._state = new auctionGen();
AuctionSell._state.init(i);
auctions.push(AuctionSell._state);
Run Code Online (Sandbox Code Playgroud)
需要注意的auctionGen()是,该函数返回一个包含拍卖本身周围所有变量和逻辑的对象.
function auctionGen()
{
return {
//code
}
}
Run Code Online (Sandbox Code Playgroud)
^这只是一个空白模板,用于显示实际创建对象的方式.
更新拍卖数组:
update : function(dt)
{
if(auctions.length > 0)
{
for(var i = 0; i < auctions.length; ++i)
{
if(!auctions[i]._expired)
{
auctions[i].update(dt);
}
else
{
auctions.splice(i, 1);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我创建了新对象,然后将其推入一个包含我的拍卖的数组中.这发生在拍卖的init功能中,该功能仅在创建新拍卖时被调用.我已经检查了两个拍卖状态的数据,它们包含了拍卖的不同车辆,但看起来好像创建新的一个停止旧的.
如果我单独进行一次拍卖 - 取决于汽车 - 最终出价将始终高于其实际价值.但是,如果我同时进行这些拍卖,则保证价值不足.
我刚刚同时进行了两次拍卖,第一辆车的价格是,$18000但拍卖结束了$6370.第二辆车被评估为$57,000,拍卖结束于$46428.
所有出价均由AI完成,并且它们被编程为始终在高于车辆价值的某一点停止出价.只有在一次运行两个或更多拍卖时才会出现此问题.
还有另一种方法,我应该创建这些对象,使它们成为真正的新对象吗?截至目前,他们似乎互相干扰.
将更新调用更改为以下内容后:
update : function(dt)
{
var i; …Run Code Online (Sandbox Code Playgroud) 此应用程序的目的是模拟大量的掷骰子游戏.我有另一个版本,它玩一个游戏,要求用户输入和输出信息.此版本的目的是仅在10,000次游戏后显示结果.结果是房子赢了多少场比赛,玩家赢了多少场比赛以及每场比赛的平均掷骰数.我还没有实现滚动,因为我想让游戏首先正确递增.
当我执行这个时会发生什么是一个数字墙(这是由于cout << playerwintotal;)并且是故意的,但数字重复3-4次,直到循环已经超过10,000次.
即.1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 5 5 5等
最终结果通常是这样的:
经过10,000次掷骰子游戏后,
玩家赢得了2502场比赛.
这座房子赢了3625场比赛.
我不确定如何解决这个问题,因为我可以说一切都是应该的,尽管这只是我第四天的C++.
#include <iostream>
#include <string>
#include "randgen.h"
using namespace std;
const int MAX_PLAYS = 10000;
int main() {
int roll;
RandGen rg;
int die1 = rg(6) + 1;
int die2 = rg(6) + 1;
int point;
int total = die1 + die2;
bool playerwin;
bool housewin;
int playerwintotal = 0;
int housewintotal = 0; …Run Code Online (Sandbox Code Playgroud) 所以我准备把我的电脑从窗户里扔出来,而我现在已经到了我想要在销毁昂贵的设备之前寻求帮助的地步.
我的程序有一个自动填写的列表(我手动输入项目),它只是输出它.然后,我有另一个代码块,它将使用赋值运算符再次输出它,然后是带有复制构造函数的第三个副本.
赋值运算符会使程序崩溃,但如果我将它注释掉以便让它进入复制构造函数,那么列表就会变空.
任何说"TODO"你都可以忽略的东西,我注意到后来要修复.
这是所有动作发生的地方:
(这不是我的主要功能,那里没有错)
List::List() : m_pFront(0), m_pBack(0), _pData(0)
{}
List::~List()
{
Clear();
}
List::List(const char* p)
{
if(!p)
{
_pData = 0;
return;
}
if(strlen(p) == 0)
{
_pData = 0;
return;
}
_pData = new char[strlen(p) + 1];
strcpy(_pData, p);
}
void List::Clear()
{
//delete
if(!m_pFront)
{
return;
}
delete m_pFront;
Node* p = m_pBack;
//Walking the list
while(p)
{
//Get a pointer to the next in the list
Node* pTemp = p -> m_pNext; …Run Code Online (Sandbox Code Playgroud) 这对我来说是一个不断增长的刺激源,当我按下相应的按钮时(他们在上面初始化)他们实际上没有执行,我被困在菜单中.
我确信这很荒谬,我只是没有看到它.
编辑:根据要求添加更多
const int POKER = 1;
const int EVAL = 2;
const int EXIT = 3;
const char FIVE_CARD = 'a';
const char TEXAS = 'b';
const char OMAHA = 'c';
const char SEVEN_CARD = 'd';
const char GO_BACK = 'e';
const char MENU[] = "\nPlease choose an option from the following:\n"
"1) Play Poker\n2) Set Evaluation Method\n3) Quit\n: ";
const char POKER_MENU[] = "\nPlease choose your game:\n"
"a) 5 Card Draw\nb) Texas Hold 'Em\nc) Omaha High\n"
"d) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我需要的字符串的一部分,但我不需要其余的(对于这部分)
基本上,字符串看起来像这样:
This item costs $1.99
我需要在其他地方进行完整描述,但在代码中的一个特定部分,我需要它只显示任何内容,$以便它只会打印出来
$1.99
我不知道怎么做,我可以得到一些帮助吗?