• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            2007年1月25日

            今天無(wú)意中學(xué)到了一個(gè)小的知識(shí)點(diǎn),故趕緊寫下來(lái)以防遺忘.
            ?在很多的對(duì)話框操作中,我們經(jīng)常要用到在一個(gè)對(duì)話框中調(diào)用另一個(gè)對(duì)話框的函數(shù)或變量.可以用如下方法來(lái)解決.
            ??? HWND hWnd=::FindWindow(NULL,_T("Sphere"));????? //得到對(duì)話框的句柄
            ? ?C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //由句柄得到對(duì)話框的對(duì)象指針
            ?? pWnd->xxx( );???????????????????????????????????????????? //調(diào)用C***Dialog中的函數(shù)xxx();

            posted @ 2007-01-25 14:55 瘋蝶雨人 閱讀(4571) | 評(píng)論 (2)編輯 收藏


            2007年1月16日

            面向?qū)ο?就是,思考問(wèn)題的方法,以對(duì)象為主體,眼睛看什么都是對(duì)象
            說(shuō)[對(duì)象],其實(shí)還是不好懂,因?yàn)檫@個(gè)概念是直接從英文翻譯過(guò)來(lái)的
            對(duì)中國(guó)人也許說(shuō),面向東西,面向物體(抽象的物體),面向事物,之類的翻譯或許更好理解
            為什么說(shuō)是面向?qū)ο竽?是為了和[面向過(guò)程]相對(duì)
            以前[面向?qū)ο骫的程序概念等還沒(méi)有出來(lái)前
            程序的設(shè)計(jì)都是在想怎樣才能一步一步的解決問(wèn)題,所以思維方式是過(guò)程,或是說(shuō)步驟,早期的C語(yǔ)言呀BASIC呀的都是,匯編就更是了
            而[面向?qū)ο骫的基本是,如何設(shè)計(jì)一個(gè)個(gè)能動(dòng)的物體(OBJECT對(duì)象)他們有不同的功能,之后的問(wèn)題就是如何擺弄這些積木似的東西,相互組合調(diào)用各個(gè)對(duì)象的他們自己擅長(zhǎng)的功能(術(shù)語(yǔ)叫METHOD,方法),最后完成一個(gè)大的目的(當(dāng)然步驟,和過(guò)程,解決問(wèn)題的先后順序等,還是存在的)

            為什么要面向?qū)ο蟮乃伎挤椒ê透拍?
            是為了提高開(kāi)發(fā)效率
            為什么能提高效率?因?yàn)槊嫦驅(qū)ο蟮脑O(shè)計(jì)中,都是在設(shè)計(jì)一個(gè)個(gè)的物件(OBJECT),共同的地方,可以重復(fù)利用
            C語(yǔ)言也有庫(kù)什么的,為什么非要弄個(gè)新的,這么難懂的概念?
            面向?qū)ο筮€有C語(yǔ)言等沒(méi)有的很多新的概念,如繼承,接口等,利用這些概念也可以提高開(kāi)發(fā)的效率,減少重復(fù)開(kāi)發(fā)
            小的項(xiàng)目里也許體現(xiàn)不出來(lái)面向?qū)ο蟮膬?yōu)勢(shì)
            大的項(xiàng)目就很有用了(也許只能在實(shí)際開(kāi)發(fā)中去體會(huì)了)

            面向過(guò)程的開(kāi)發(fā),人迎合機(jī)器的工作方式
            面向?qū)ο?人更多的去集中抽象現(xiàn)實(shí)中的問(wèn)題,以人的思維方式為本位,減少了對(duì)機(jī)器物理構(gòu)造或工作方式的迎合,可以用更多的經(jīng)歷去考慮怎么解決問(wèn)題,怎么實(shí)現(xiàn)某些功能

            posted @ 2007-01-16 09:23 瘋蝶雨人 閱讀(471) | 評(píng)論 (1)編輯 收藏


            2007年1月11日

            最近在網(wǎng)上看到一個(gè)求解數(shù)學(xué)表達(dá)式程序,感覺(jué)很不錯(cuò),故拿出來(lái)修改之后供大家一起分享.
            程序如下:
            #include <ctype.h> //打開(kāi)庫(kù)文件
            #include <stdio.h>
            #include <iostream.h>
            #include <malloc.h>
            #include <process.h>
            #include <string.h>

            #define error 0
            #define ok 1
            typedef struct{
            ? int *base;
            ? int *top;
            ? int stacksize;
            }sqstack;

            class CExpression
            {
            public:
            ?CExpression();
            ?~CExpression();
            public:
            ?void initstack(sqstack &s);
            ?int gettop(sqstack &s);
            ?void push(sqstack &s,int e);
            ?int pop(sqstack &s,int &e);
            ?int setfind(char a,char b[]); //查找a在b中的位置
            ?char precede(char op1,char op2,int &flag); //比較op1和op2的優(yōu)先級(jí)
            ??? int numlink(int opd,int ops,int &flag); //數(shù)字與字符串的連接
            ?int operate(int n1,char o,int n2,int &flag);//運(yùn)算
            ??????????? /*
            ??????????? flag為一個(gè)標(biāo)志變量,
            ??????????? 1為表達(dá)式有誤!除數(shù)為0!
            ??????????? 2為表達(dá)式的值過(guò)大或過(guò)小
            ??????????? 3為未知類型的錯(cuò)誤,可能沒(méi)有這一點(diǎn)
            ??????????? 但為了容錯(cuò),還是要加上這一點(diǎn)
            ?-*/
            public:
            ?sqstack opnd;
            ?sqstack optr;
            private:
            ?sqstack s;
            };

            CExpression::CExpression()
            {
            ?s.top=s.base;
            }

            CExpression::~CExpression()
            {
            }

            void CExpression::initstack(sqstack &s)
            {
            ?s.base=(int *)malloc(10*sizeof(int));
            ?if(!s.base) exit(1);
            ?s.top=s.base;
            ?s.stacksize=100;
            }

            int CExpression::gettop(sqstack &s)
            {
            ?int e;
            ?e=*(s.top-1);
            ?return e;
            }

            void CExpression::push(sqstack &s,int e)
            {
            ??? if(s.top-s.base>=s.stacksize)
            ?{
            ??s.base=(int*)realloc(s.base,(s.stacksize+10*sizeof(int)));
            ??if(!s.base)
            ???exit(2);
            ??s.top=s.base+s.stacksize;
            ??s.stacksize+=10;
            ?}
            ?*s.top++=e;
            }

            int CExpression::pop(sqstack &s,int &e)
            {
            ?if(s.top==s.base)return error;
            ?e=*--s.top;
            ?return ok;
            }

            int CExpression::setfind(char a,char b[])
            {
            ?int i,j;
            ?i=-1,j=0;
            ?while(b[j]!='\0')
            ??if(a==b[j++]) {i=j-1;break;}
            ??return i;
            }

            char CExpression::precede(char op1,char op2,int &flag) //比較op1和op2的優(yōu)先級(jí)
            {
            ?int i,j;
            ?char st1[8]={"+-*/()#"}; //運(yùn)算符初始化
            ?char st2[7][8]={">><<<>>",">><<<>>",">>>><>>", //比較操作初始化
            ??">>>><>>","<<<<<= ",">>>> >>","<<<<< ="};
            ?i=setfind(op1,st1);j=setfind(op2,st1);
            ?if (i>-1 && j>-1) //如果你所輸入的運(yùn)算符不在+-*/()#內(nèi),返回ERROR
            ?{return st2[i][j];flag=ok;}
            ?else flag=error;
            ?return error;
            }

            int CExpression::numlink(int opd,int ops,int &flag){ //數(shù)字與字符串的連接
            ?int aa=ops;
            ?ops=ops*10+opd-48;
            ?if (ops<0 && aa>0 || aa>214748364)
            ??flag=error; else flag=ok; //flag=0,說(shuō)明ops已經(jīng)過(guò)大,
            ?return ops;
            }

            int CExpression::operate(int n1,char o,int n2,int &flag){ //運(yùn)算
            ??????????? /*
            ??????????? flag為一個(gè)標(biāo)志變量,
            ??????????? 1為表達(dá)式有誤!除數(shù)為0!
            ??????????? 2為表達(dá)式的值過(guò)大或過(guò)小
            ??????????? 3為未知類型的錯(cuò)誤,可能沒(méi)有這一點(diǎn)
            ??????????? 但為了容錯(cuò),還是要加上這一點(diǎn)
            ?-*/
            ?
            ?int result=0;
            ?switch (o){
            ?case '+': //加法運(yùn)算
            ??flag=0;result=n1+n2;
            ??if (n1>=0 && n2>=0 && result<0 || n1<=0 && n2<=0 && result>0)
            ???//兩個(gè)大于0的數(shù)相加,和小于0,或兩個(gè)小于0的數(shù)相加,和大于0,返回錯(cuò)誤
            ??{flag=2;return error;}
            ??else
            ??{flag=0;return result;}
            ??break;
            ?case '-': //減法運(yùn)算
            ??flag=0;result=n1-n2;
            ??if (n1>=0 && n2<0 && result<0 || n1<=0 && n2>0 && result>0)
            ???//一個(gè)大于0的數(shù)減一個(gè)小于0 的數(shù),和小于0或一個(gè)小于0 的數(shù)減去一個(gè)大于0的數(shù),返回錯(cuò)誤
            ???
            ??{flag=2;return error;}
            ??else
            ??{flag=0;return result;}
            ??break;
            ?case '*': //乘法運(yùn)算
            ??flag=0;result=n1*n2;
            ??if (n1>=0 && n2>=0 && result<0 || n1<=0 && n2<=0 && result>0)
            ???//兩個(gè)大于0的數(shù)相乘,積小于0,或兩個(gè)小于0的數(shù)相乘,積大于0,返回錯(cuò)誤
            ??{flag=2;return error;}
            ??else
            ??{flag=0;return result;}
            ??break;
            ?case '/': //除法運(yùn)算
            ??if(n2!=0) //如果被除數(shù)為0要返加ERROR
            ??{flag=0;return n1/n2;break;}
            ??else
            ???//除數(shù)為0,返回錯(cuò)誤
            ??{flag=1;return error;break;}
            ?}
            ?flag=3;return error;
            }

            void main()
            {
            ?CExpression expression;
            //?sqstack opnd; //用于存放運(yùn)算數(shù)
            //?sqstack optr; //用于存放運(yùn)算符
            ?int theta; //用于存放一個(gè)運(yùn)算符
            ?int a,b; //用于存放用于操作的兩個(gè)數(shù)
            ?int temp; //一個(gè)臨時(shí)的變量
            ?int flag2=0; //一個(gè)標(biāo)志變量,用于判斷是否要連接數(shù)字
            ?int flag1; //一個(gè)標(biāo)志變量,用于判斷表達(dá)式是否是無(wú)效的
            ?int cn=0; //用于存放字符的位置
            ?int ops=0; //用于存放當(dāng)前的操作數(shù)
            ?char st1[255]; //表達(dá)式中最多有255個(gè)字符
            ?char c; //用于表示當(dāng)前的字符
            ?for (a=0;a<255;a++) st1[a]='#'; //對(duì)數(shù)組初始化
            ?expression.initstack(expression.opnd); //對(duì)棧OPND初始化
            ?expression.initstack(expression.optr); //對(duì)棧OPTR初始化
            ?expression.push(expression.optr,'#');
            ?cin>>st1;
            ?temp=strlen(st1);
            ?if (st1[temp-1]!='#') st1[temp]='#'; //對(duì)表達(dá)式的結(jié)尾加入一個(gè)#
            ?
            ?c=st1[0];
            ?while(c!='#' || expression.gettop(expression.optr)!='#'){ //cout<<st1;
            ??
            ??c=st1[cn];
            ??if(isdigit(c)) {
            ???ops=expression.numlink(c,ops,temp);
            ???if (temp==ok)
            ???{
            ????if (flag2) expression.pop(expression.opnd,temp);
            ????flag2=1;
            ????expression.push(expression.opnd,ops);
            ????cn++;
            ????continue;
            ???}
            ???else
            ???{cout<<"表達(dá)式的值過(guò)大,無(wú)法計(jì)算!"<<endl;return;}
            ??}
            ??else{
            ???ops=0;
            ???flag2=0;
            ???temp=expression.precede(expression.gettop(expression.optr),c,temp); //temp為precede中的一個(gè)代號(hào),為ok為正確的運(yùn)算符比較,為error為錯(cuò)誤的運(yùn)算符比較
            ???if (temp==error) {cout<<"表達(dá)式有誤!無(wú)法求解!"<<endl;return;} //錯(cuò)誤的運(yùn)算符比較時(shí),返回.
            ???switch (temp){
            ???case '<':
            ????expression.push(expression.optr,c);cn++;break; //如果為<,操作符入棧
            ???case '=':
            ????expression.pop(expression.optr,temp);cn++;break; //如果為=,操作符出棧
            ???case '>': //如果為>,執(zhí)行運(yùn)算操作
            ????expression.pop(expression.optr,theta);
            ????expression.pop(expression.opnd,b);
            ????expression.pop(expression.opnd,a);
            ????expression.operate(a,theta,b,flag1);
            ????if (flag1==1) {cout<<"表達(dá)式有誤!除數(shù)不能為0!"<<endl;return;}
            ????else if(flag1==2) {cout<<"表達(dá)式的值過(guò)大或過(guò)小,無(wú)法計(jì)算!"<<endl;return;}
            ????else if(flag1==3) {cout<<"未知道類型的錯(cuò)誤!"<<endl;return;}
            ????expression.push(expression.opnd,expression.operate(a,theta,b,flag1));
            ????break;
            ???case ' ':
            ????cout<<"表達(dá)式有誤!無(wú)法求解!"<<endl;return;
            ???} //end switch
            ??} //end if
            ?} //end while
            ?a=expression.gettop(expression.opnd);
            ?cn=0;
            ?while(st1[cn]!='#') cout<<st1[cn++]; //輸出你所輸入字符串
            ?cout<<"=";
            ?cout<<a<<endl; //輸出最終結(jié)果
            }

            該程序的缺點(diǎn)是不能處理存在小數(shù)的表達(dá)式.

            posted @ 2007-01-11 09:34 瘋蝶雨人 閱讀(1072) | 評(píng)論 (0)編輯 收藏


            2007年1月10日

            一直以來(lái),都想找一些好的網(wǎng)站來(lái)學(xué)習(xí),可一直沒(méi)有如愿,今天終于找到這樣的網(wǎng)站了.在這里要謝謝★Rosina★,是她介紹給我的.非常感謝!!!

            posted @ 2007-01-10 15:15 瘋蝶雨人 閱讀(240) | 評(píng)論 (1)編輯 收藏


            僅列出標(biāo)題  

            posts - 4, comments - 4, trackbacks - 0, articles - 0

            Copyright © 瘋蝶雨人

            久久亚洲中文字幕精品有坂深雪| 久久天堂AV综合合色蜜桃网| 午夜天堂精品久久久久| 久久综合九色综合网站| 亚洲国产精品无码久久久蜜芽| 亚洲av日韩精品久久久久久a| 久久香蕉国产线看观看精品yw| a高清免费毛片久久| 无码乱码观看精品久久| 香蕉久久夜色精品国产2020| 99久久国产宗和精品1上映 | 亚洲国产成人精品女人久久久| 欧美午夜A∨大片久久| 久久WWW免费人成一看片| 青青草国产精品久久| 久久精品免费全国观看国产| 一本久久知道综合久久| 国产精品美女久久久久AV福利| 中文字幕久久亚洲一区| www性久久久com| 久久99国产综合精品| 国产精品熟女福利久久AV| 亚洲va国产va天堂va久久| 老司机午夜网站国内精品久久久久久久久 | 久久精品无码一区二区三区日韩 | 欧美日韩精品久久久久| 一本色道久久88—综合亚洲精品| 久久99精品国产麻豆蜜芽| 亚洲国产精品久久久久久| 亚洲国产精品高清久久久| 亚洲国产精品婷婷久久| 亚洲AV无码1区2区久久| 18禁黄久久久AAA片| 大香伊人久久精品一区二区| 久久综合丁香激情久久| 狠狠色噜噜色狠狠狠综合久久 | 久久精品国产精品青草| 久久国产精品99精品国产| 久久w5ww成w人免费| 中文字幕日本人妻久久久免费 | 国产aⅴ激情无码久久|