锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽(tīng)聽(tīng)聽(tīng) HWND hWnd=::FindWindow(NULL,_T("Sphere"));聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //寰楀埌瀵硅瘽妗嗙殑鍙ユ焺
聽(tīng) 聽(tīng)C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //鐢卞彞鏌勫緱鍒板璇濇鐨勫璞℃寚閽?br />聽(tīng)聽(tīng) pWnd->xxx( );聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //璋冪敤C***Dialog涓殑鍑芥暟xxx();
]]>
浠ュ墠[闈㈠悜瀵硅薄]鐨勭▼搴忔蹇電瓑榪樻病鏈夊嚭鏉ュ墠
紼嬪簭鐨勮璁¢兘鏄湪鎯蟲(chóng)庢牱鎵嶈兘涓姝ヤ竴姝ョ殑瑙e喅闂,鎵浠ユ濈淮鏂瑰紡鏄繃紼?鎴栨槸璇存楠?鏃╂湡鐨凜璇█鍛BASIC鍛鐨勯兘鏄?姹囩紪灝辨洿鏄簡(jiǎn)
鑰孾闈㈠悜瀵硅薄]鐨勫熀鏈槸,濡備綍璁捐涓涓釜鑳藉姩鐨勭墿浣?OBJECT瀵硅薄)浠栦滑鏈変笉鍚岀殑鍔熻兘,涔嬪悗鐨勯棶棰樺氨鏄浣曟憜寮勮繖浜涚Н鏈ㄤ技鐨勪笢瑗?鐩鎬簰緇勫悎璋冪敤鍚勪釜瀵硅薄鐨勪粬浠嚜宸辨搮闀跨殑鍔熻兘(鏈鍙玀ETHOD,鏂規(guī)硶),鏈鍚庡畬鎴愪竴涓ぇ鐨勭洰鐨?褰撶劧姝ラ,鍜岃繃紼?瑙e喅闂鐨勫厛鍚庨『搴忕瓑,榪樻槸瀛樺湪鐨?
涓轟粈涔堣闈㈠悜瀵硅薄鐨勬濊冩柟娉曞拰姒傚康?
鏄負(fù)浜?jiǎn)鎻愰珮寮鍙戞晥鐜?br />涓轟粈涔堣兘鎻愰珮鏁堢巼?鍥犱負(fù)闈㈠悜瀵硅薄鐨勮璁′腑,閮芥槸鍦ㄨ璁′竴涓釜鐨勭墿浠?OBJECT),鍏卞悓鐨勫湴鏂?鍙互閲嶅鍒╃敤
C璇█涔熸湁搴撲粈涔堢殑,涓轟粈涔堥潪瑕佸紕涓柊鐨?榪欎箞闅炬噦鐨勬蹇?
闈㈠悜瀵硅薄榪樻湁C璇█絳夋病鏈夌殑寰堝鏂扮殑姒傚康,濡傜戶鎵?鎺ュ彛絳?鍒╃敤榪欎簺姒傚康涔熷彲浠ユ彁楂樺紑鍙戠殑鏁堢巼,鍑忓皯閲嶅寮鍙?br />灝忕殑欏圭洰閲屼篃璁鎬綋鐜頒笉鍑烘潵闈㈠悜瀵硅薄鐨勪紭鍔?br />澶х殑欏圭洰灝卞緢鏈夌敤浜?涔熻鍙兘鍦ㄥ疄闄呭紑鍙戜腑鍘諱綋浼?xì)浜?jiǎn))
闈㈠悜榪囩▼鐨勫紑鍙?浜鴻繋鍚堟満鍣ㄧ殑宸ヤ綔鏂瑰紡
闈㈠悜瀵硅薄,浜烘洿澶氱殑鍘婚泦涓娊璞$幇瀹炰腑鐨勯棶棰?浠ヤ漢鐨勬濈淮鏂瑰紡涓烘湰浣?鍑忓皯浜?jiǎn)瀵规満鍣ㄧ墿鐞嗘瀯閫犳垨宸ヤ綔鏂瑰紡鐨勮繋鍚?鍙互鐢ㄦ洿澶氱殑緇忓巻鍘昏冭檻鎬庝箞瑙e喅闂,鎬庝箞瀹炵幇鏌愪簺鍔熻兘
]]>
紼嬪簭濡備笅:
#include <ctype.h> //鎵撳紑搴撴枃浠?br />#include <stdio.h>
#include <iostream.h>
#include <malloc.h>
#include <process.h>
#include <string.h>
#define error 0
#define ok 1
typedef struct{
聽(tīng) int *base;
聽(tīng) int *top;
聽(tīng) int stacksize;
}sqstack;
class CExpression
{
public:
聽(tīng)CExpression();
聽(tīng)~CExpression();
public:
聽(tīng)void initstack(sqstack &s);
聽(tīng)int gettop(sqstack &s);
聽(tīng)void push(sqstack &s,int e);
聽(tīng)int pop(sqstack &s,int &e);
聽(tīng)int setfind(char a,char b[]); //鏌ユ壘a鍦╞涓殑浣嶇疆
聽(tīng)char precede(char op1,char op2,int &flag); //姣旇緝op1鍜宱p2鐨勪紭鍏堢駭
聽(tīng)聽(tīng)聽(tīng) int numlink(int opd,int ops,int &flag); //鏁板瓧涓庡瓧絎︿覆鐨勮繛鎺?br />聽(tīng)int operate(int n1,char o,int n2,int &flag);//榪愮畻
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) /*
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) flag涓轟竴涓爣蹇楀彉閲?
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1涓鴻〃杈懼紡鏈夎錛侀櫎鏁頒負(fù)0錛?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2涓鴻〃杈懼紡鐨勫艱繃澶ф垨榪囧皬
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 3涓烘湭鐭ョ被鍨嬬殑閿欒,鍙兘娌℃湁榪欎竴鐐?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 浣嗕負(fù)浜?jiǎn)瀹归?榪樻槸瑕佸姞涓婅繖涓鐐?br />聽(tīng)-*/
public:
聽(tīng)sqstack opnd;
聽(tīng)sqstack optr;
private:
聽(tīng)sqstack s;
};
CExpression::CExpression()
{
聽(tīng)s.top=s.base;
}
CExpression::~CExpression()
{
}
void CExpression::initstack(sqstack &s)
{
聽(tīng)s.base=(int *)malloc(10*sizeof(int));
聽(tīng)if(!s.base) exit(1);
聽(tīng)s.top=s.base;
聽(tīng)s.stacksize=100;
}
int CExpression::gettop(sqstack &s)
{
聽(tīng)int e;
聽(tīng)e=*(s.top-1);
聽(tīng)return e;
}
void CExpression::push(sqstack &s,int e)
{
聽(tīng)聽(tīng)聽(tīng) if(s.top-s.base>=s.stacksize)
聽(tīng){
聽(tīng)聽(tīng)s.base=(int*)realloc(s.base,(s.stacksize+10*sizeof(int)));
聽(tīng)聽(tīng)if(!s.base)
聽(tīng)聽(tīng)聽(tīng)exit(2);
聽(tīng)聽(tīng)s.top=s.base+s.stacksize;
聽(tīng)聽(tīng)s.stacksize+=10;
聽(tīng)}
聽(tīng)*s.top++=e;
}
int CExpression::pop(sqstack &s,int &e)
{
聽(tīng)if(s.top==s.base)return error;
聽(tīng)e=*--s.top;
聽(tīng)return ok;
}
int CExpression::setfind(char a,char b[])
{
聽(tīng)int i,j;
聽(tīng)i=-1,j=0;
聽(tīng)while(b[j]!='\0')
聽(tīng)聽(tīng)if(a==b[j++]) {i=j-1;break;}
聽(tīng)聽(tīng)return i;
}
char CExpression::precede(char op1,char op2,int &flag) //姣旇緝op1鍜宱p2鐨勪紭鍏堢駭
{
聽(tīng)int i,j;
聽(tīng)char st1[8]={"+-*/()#"}; //榪愮畻絎﹀垵濮嬪寲
聽(tīng)char st2[7][8]={">><<<>>",">><<<>>",">>>><>>", //姣旇緝鎿嶄綔鍒濆鍖?br />聽(tīng)聽(tīng)">>>><>>","<<<<<= ",">>>> >>","<<<<< ="};
聽(tīng)i=setfind(op1,st1);j=setfind(op2,st1);
聽(tīng)if (i>-1 && j>-1) //濡傛灉浣犳墍杈撳叆鐨勮繍綆楃涓嶅湪+-*/錛堬級(jí)#鍐咃紝榪斿洖ERROR
聽(tīng){return st2[i][j];flag=ok;}
聽(tīng)else flag=error;
聽(tīng)return error;
}
int CExpression::numlink(int opd,int ops,int &flag){ //鏁板瓧涓庡瓧絎︿覆鐨勮繛鎺?br />聽(tīng)int aa=ops;
聽(tīng)ops=ops*10+opd-48;
聽(tīng)if (ops<0 && aa>0 || aa>214748364)
聽(tīng)聽(tīng)flag=error; else flag=ok; //flag=0,璇存槑ops宸茬粡榪囧ぇ錛?br />聽(tīng)return ops;
}
int CExpression::operate(int n1,char o,int n2,int &flag){ //榪愮畻
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) /*
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) flag涓轟竴涓爣蹇楀彉閲?
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1涓鴻〃杈懼紡鏈夎錛侀櫎鏁頒負(fù)0錛?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2涓鴻〃杈懼紡鐨勫艱繃澶ф垨榪囧皬
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 3涓烘湭鐭ョ被鍨嬬殑閿欒,鍙兘娌℃湁榪欎竴鐐?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 浣嗕負(fù)浜?jiǎn)瀹归?榪樻槸瑕佸姞涓婅繖涓鐐?br />聽(tīng)-*/
聽(tīng)
聽(tīng)int result=0;
聽(tīng)switch (o){
聽(tīng)case '+': //鍔犳硶榪愮畻
聽(tīng)聽(tīng)flag=0;result=n1+n2;
聽(tīng)聽(tīng)if (n1>=0 && n2>=0 && result<0 || n1<=0 && n2<=0 && result>0)
聽(tīng)聽(tīng)聽(tīng)//涓や釜澶т簬0鐨勬暟鐩稿姞,鍜屽皬浜?,鎴栦袱涓皬浜?鐨勬暟鐩稿姞,鍜屽ぇ浜?,榪斿洖閿欒
聽(tīng)聽(tīng){flag=2;return error;}
聽(tīng)聽(tīng)else
聽(tīng)聽(tīng){flag=0;return result;}
聽(tīng)聽(tīng)break;
聽(tīng)case '-': //鍑忔硶榪愮畻
聽(tīng)聽(tīng)flag=0;result=n1-n2;
聽(tīng)聽(tīng)if (n1>=0 && n2<0 && result<0 || n1<=0 && n2>0 && result>0)
聽(tīng)聽(tīng)聽(tīng)//涓涓ぇ浜?鐨勬暟鍑忎竴涓皬浜? 鐨勬暟,鍜屽皬浜?鎴栦竴涓皬浜? 鐨勬暟鍑忓幓涓涓ぇ浜?鐨勬暟,榪斿洖閿欒
聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng){flag=2;return error;}
聽(tīng)聽(tīng)else
聽(tīng)聽(tīng){flag=0;return result;}
聽(tīng)聽(tīng)break;
聽(tīng)case '*': //涔樻硶榪愮畻
聽(tīng)聽(tīng)flag=0;result=n1*n2;
聽(tīng)聽(tīng)if (n1>=0 && n2>=0 && result<0 || n1<=0 && n2<=0 && result>0)
聽(tīng)聽(tīng)聽(tīng)//涓や釜澶т簬0鐨勬暟鐩鎬箻,縐皬浜?,鎴栦袱涓皬浜?鐨勬暟鐩鎬箻,縐ぇ浜?,榪斿洖閿欒
聽(tīng)聽(tīng){flag=2;return error;}
聽(tīng)聽(tīng)else
聽(tīng)聽(tīng){flag=0;return result;}
聽(tīng)聽(tīng)break;
聽(tīng)case '/': //闄ゆ硶榪愮畻
聽(tīng)聽(tīng)if(n2!=0) //濡傛灉琚櫎鏁頒負(fù)0瑕佽繑鍔燛RROR
聽(tīng)聽(tīng){flag=0;return n1/n2;break;}
聽(tīng)聽(tīng)else
聽(tīng)聽(tīng)聽(tīng)//闄ゆ暟涓?,榪斿洖閿欒
聽(tīng)聽(tīng){flag=1;return error;break;}
聽(tīng)}
聽(tīng)flag=3;return error;
}
void main()
{
聽(tīng)CExpression expression;
//聽(tīng)sqstack opnd; //鐢ㄤ簬瀛樻斁榪愮畻鏁?br />//聽(tīng)sqstack optr; //鐢ㄤ簬瀛樻斁榪愮畻絎?br />聽(tīng)int theta; //鐢ㄤ簬瀛樻斁涓涓繍綆楃
聽(tīng)int a,b; //鐢ㄤ簬瀛樻斁鐢ㄤ簬鎿嶄綔鐨勪袱涓暟
聽(tīng)int temp; //涓涓復(fù)鏃剁殑鍙橀噺
聽(tīng)int flag2=0; //涓涓爣蹇楀彉閲忥紝鐢ㄤ簬鍒ゆ柇鏄惁瑕佽繛鎺ユ暟瀛?br />聽(tīng)int flag1; //涓涓爣蹇楀彉閲忥紝鐢ㄤ簬鍒ゆ柇琛ㄨ揪寮忔槸鍚︽槸鏃犳晥鐨?br />聽(tīng)int cn=0; //鐢ㄤ簬瀛樻斁瀛楃鐨勪綅緗?br />聽(tīng)int ops=0; //鐢ㄤ簬瀛樻斁褰撳墠鐨勬搷浣滄暟
聽(tīng)char st1[255]; //琛ㄨ揪寮忎腑鏈澶氭湁255涓瓧絎?br />聽(tīng)char c; //鐢ㄤ簬琛ㄧず褰撳墠鐨勫瓧絎?br />聽(tīng)for (a=0;a<255;a++) st1[a]='#'; //瀵規(guī)暟緇勫垵濮嬪寲
聽(tīng)expression.initstack(expression.opnd); //瀵規(guī)爤OPND鍒濆鍖?br />聽(tīng)expression.initstack(expression.optr); //瀵規(guī)爤OPTR鍒濆鍖?br />聽(tīng)expression.push(expression.optr,'#');
聽(tīng)cin>>st1;
聽(tīng)temp=strlen(st1);
聽(tīng)if (st1[temp-1]!='#') st1[temp]='#'; //瀵硅〃杈懼紡鐨勭粨灝懼姞鍏ヤ竴涓?
聽(tīng)
聽(tīng)c=st1[0];
聽(tīng)while(c!='#' || expression.gettop(expression.optr)!='#'){ //cout<<st1;
聽(tīng)聽(tīng)
聽(tīng)聽(tīng)c=st1[cn];
聽(tīng)聽(tīng)if(isdigit(c)) {
聽(tīng)聽(tīng)聽(tīng)ops=expression.numlink(c,ops,temp);
聽(tīng)聽(tīng)聽(tīng)if (temp==ok)
聽(tīng)聽(tīng)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)if (flag2) expression.pop(expression.opnd,temp);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)flag2=1;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.push(expression.opnd,ops);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)cn++;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)continue;
聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)else
聽(tīng)聽(tīng)聽(tīng){cout<<"琛ㄨ揪寮忕殑鍊艱繃澶?鏃犳硶璁$畻!"<<endl;return;}
聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)else{
聽(tīng)聽(tīng)聽(tīng)ops=0;
聽(tīng)聽(tīng)聽(tīng)flag2=0;
聽(tīng)聽(tīng)聽(tīng)temp=expression.precede(expression.gettop(expression.optr),c,temp); //temp涓簆recede涓殑涓涓唬鍙?涓簅k涓烘紜殑榪愮畻絎︽瘮杈?涓篹rror涓洪敊璇殑榪愮畻絎︽瘮杈?
聽(tīng)聽(tīng)聽(tīng)if (temp==error) {cout<<"琛ㄨ揪寮忔湁璇紒鏃犳硶姹傝В錛?<<endl;return;} //閿欒鐨勮繍綆楃姣旇緝鏃?榪斿洖.
聽(tīng)聽(tīng)聽(tīng)switch (temp){
聽(tīng)聽(tīng)聽(tīng)case '<':
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.push(expression.optr,c);cn++;break; //濡傛灉涓?lt;,鎿嶄綔絎﹀叆鏍?br />聽(tīng)聽(tīng)聽(tīng)case '=':
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.pop(expression.optr,temp);cn++;break; //濡傛灉涓?,鎿嶄綔絎﹀嚭鏍?br />聽(tīng)聽(tīng)聽(tīng)case '>': //濡傛灉涓?gt;,鎵ц榪愮畻鎿嶄綔
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.pop(expression.optr,theta);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.pop(expression.opnd,b);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.pop(expression.opnd,a);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.operate(a,theta,b,flag1);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)if (flag1==1) {cout<<"琛ㄨ揪寮忔湁璇紒闄ゆ暟涓嶈兘涓?錛?<<endl;return;}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)else if(flag1==2) {cout<<"琛ㄨ揪寮忕殑鍊艱繃澶ф垨榪囧皬,鏃犳硶璁$畻!"<<endl;return;}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)else if(flag1==3) {cout<<"鏈煡閬撶被鍨嬬殑閿欒!"<<endl;return;}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)expression.push(expression.opnd,expression.operate(a,theta,b,flag1));
聽(tīng)聽(tīng)聽(tīng)聽(tīng)break;
聽(tīng)聽(tīng)聽(tīng)case ' ':
聽(tīng)聽(tīng)聽(tīng)聽(tīng)cout<<"琛ㄨ揪寮忔湁璇紒鏃犳硶姹傝В錛?<<endl;return;
聽(tīng)聽(tīng)聽(tīng)} //end switch
聽(tīng)聽(tīng)} //end if
聽(tīng)} //end while
聽(tīng)a=expression.gettop(expression.opnd);
聽(tīng)cn=0;
聽(tīng)while(st1[cn]!='#') cout<<st1[cn++]; //杈撳嚭浣犳墍杈撳叆瀛楃涓?br />聽(tīng)cout<<"=";
聽(tīng)cout<<a<<endl; //杈撳嚭鏈緇堢粨鏋?br />}
璇ョ▼搴忕殑緙虹偣鏄笉鑳藉鐞嗗瓨鍦ㄥ皬鏁扮殑琛ㄨ揪寮?