24点程序(2)

终于搬完家了,现在程序的基本界面已经基本上完成了,剩下的是函数的设计代码部分了,本来打算设计成互动模式的,就是做成个小游戏,现在看来还是先把核心的部分搞好后看情况而定了,有时间就搞。
   设计界面的时候碰到了了个小麻烦。就是随机产生4个数的问题
我的代码为这样的:
void CMy24pointDlg::OnStart()
{
 // TODO: Add your control notification handler code here
 //产生4个随机数
  for(int i=0;i<4;i++)
 {
  srand( (unsigned)time( NULL ) );
  num[i]=rand()%13;
 }
 
 //把随机数放到对话框上
 SetDlgItemInt(IDC_NUM1,num[0],FALSE);
 SetDlgItemInt(IDC_NUM2,num[1],FALSE);
 SetDlgItemInt(IDC_NUM3,num[2],FALSE);
 SetDlgItemInt(IDC_NUM4,num[3],FALSE);
}

产生的4个随机数老是一样子的。
 然后改为
srand( (unsigned)time( NULL ) );
for(int i=0;i<4;i++)
 {
  
  num[i]=rand()%13;
 }


这样问题就解决了
我用的那种方法产生随机数的播种函数每次产生的种子是一样的所以每次产生的随机数也是一样的。
特别感谢论坛上的几位兄弟的帮忙。

由于手头没有堆栈的基本操作函数,我就写了一个
#include <iostream.h>
#include <stdlib.h>
#include <string.h>

 

const MAXNUM=100;
class stack
{
private:
 int top;//指向栈顶的
 char stacklist[MAXNUM];
public:
 stack()
 {
  top=-1;
 }
 //~stack();
 void Initstack();// 初始化 s 为空栈
 void Push(char x); // 将元素 x 插入 s 的栈顶
 char Pop();// 删除 s 中的栈顶元素
 bool SEmpty();// 若栈 s 为空则返回 TRUE,否则返回 FALSE
 char GetTop();// 返回 s 中的栈顶元素
 void ClearStack();// 将栈 s 清空
 int StackLength();// 返回栈 s 中元素个数
 void StackList();//显示栈里的元素
 //void DestroyStack();// 销毁栈 s 结构
};

//对栈进行操作
void stack::Initstack()
{
 top=-1;
}

void stack::Push(char x)
{
 if(top==MAXNUM-1)
 {
  cerr<<"栈已近满了"<<endl;
 }
 
 else
 {
  top++;
  stacklist[top]=x;
 }
}

char stack::Pop()
{
 if(top==-1)
 {
  cerr<<"栈已近空了"<<endl;
  exit(1);
 }
 else
 {  
  return stacklist[top];
  top--;
 }
}


bool stack::SEmpty()
{
 if(top==-1)
 {
  return 1;
 }
 else
 {
  return 0;
 }
}


char stack::GetTop()
{
 if(-1==top)
 {
  cerr<<"栈已近空了"<<endl;
  exit(1);
 }
 else
 {
  return stacklist[top];
 }


void stack::ClearStack()
{
 if(-1==top)
 {
  cerr<<"栈已近空了"<<endl;
  exit(1);
 }
 else
 {
  top=-1;
 }
}


int stack::StackLength()
{
 return top+1;
}


void stack::StackList()
{
 //CString str;
 
 if(-1==top)
 {
  cerr<<"栈已近空了"<<endl;
  exit(1);
 }
 else
 {
  char* str=new char[top];
  for(int i=0;i<top;i++)
  {
   //str=str+stacklist[i];
   str[i]=stacklist[i];
  }
  cout<<str<<endl;
  delete[] str;
 }
}

/*void stack::DestroyStack()
{

}*/

还有两个关键性问题下次再完成了
1)后缀表达式的求值
2)中最表达式变后缀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值