注意:判斷數值和表示式 的合理性。
#include
#include
#include
#define max_len 200
//判斷字元是否合理 0-9 . + - * /
bool
checkinput
(char c)
//. + - * /
if(c ==
0x2e
|| c ==
0x2b
|| c ==
0x2d
|| c==
0x2a
|| c ==
0x2f
)return
false;}
bool
isnum
(char c)
//. + - * /
if(c ==
0x2e
)return
false;}
bool
isoperate
(char c)
return
false;}
//1.判斷表示式是否合理,2.判斷數值是否合理
intmain
(int argc,
char
**ar**)
;memset
(szbuf,
0,max_len)
;scanf
("%s"
,szbuf)
;int len =
strlen
(szbuf)
;//校驗使用者輸入字元是否正確
for(
int i=
0;iprintf
("you input:%s\n執行計算中,請稍後...\n"
,szbuf)
;//解析表示式
//計算值
double
*pvalues =
(double*)
malloc
(sizeof
(double))
;int ivalueindex =0;
//操作符
char
* popera =
(char*)
malloc
(sizeof
(char))
;int ioperaindex =0;
int valindex =0;
double fprevalue =0;
char sztemp[max_len]
;memset
(sztemp,
0,max_len)
;for
(int i=
0;i) sztemp[valindex++]=
'\0'
; fprevalue =
atof
(sztemp)
; valindex=0;
//儲存計算值
pvalues[ivalueindex]
= fprevalue;
ivalueindex ++
; pvalues =
(double*)
realloc
(pvalues,
(ivalueindex+1)
*sizeof
(double))
;//儲存操作符
popera[ioperaindex]
= szbuf[i]
; ioperaindex ++
; popera =
(char*)
realloc
(popera,
(ioperaindex+1)
*sizeof
(char))
;} sztemp[valindex++]=
'\0'
; fprevalue =
atof
(sztemp)
; pvalues[ivalueindex]
= fprevalue;
//執行*/計算 //10*20/23
double dtemp =0;
for(
int i=
0;i)else
if( popera[i]
==0x2f
)// /
}//執行+- //10+0*666-9
char cpreopera =0;
for(
int i=
0;i)else
if( popera[i]
==0x2d
)// -
else
//* /
else
if( cpreopera ==
0x2d
)// -}}
printf
("reslut = %g\n"
,pvalues[ivalueindex]);
delete
pvalues;
delete
popera;
}// getchar();
return0;
}
C 實現簡單計算器功能
實現效果 form1.cs using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using...
C 實現簡單計算器功能
c 實現簡單計算器的具體 供大家參考,具體內容如下 要求 輸入乙個包含 的非負整數計算表示式,計算表示式的值,每個字元之間需有乙個空格,若一行輸入為0,則退出程式。輸入樣例 4 2 5 7 11 輸出樣例 13.36 實現 include include using namespace std ch...
python 實現計算器功能
開發乙個簡單的python計算器 實現加減乘除及拓號優先順序解析 使用者輸入 1 2 60 30 40 5 9 25 3 7 399 42998 10 568 14 43 16 32 等類似公式後,必須自己解析裡面的 符號和公式 不能呼叫eval等類似功能偷懶實現 運算後得出結果,結果必須與真實的計...