自編基於字串檢索的小數四則運算方法

2021-04-29 02:16:55 字數 2204 閱讀 5294

完成乙個四則運算表示式的計算,表示式由字串形式給出,輸入和輸出都為浮點數。

演算法1.字元檢索(從給定串中提取運算數和四則運算符+ - * / ( ),並按從左到右檢索順序歸入各自陣列,其中運算子陣列是基於給構的,數字陣列是基於double型的。運算子結構定義如下:

struct opt

;2.檢索串中數字的個數(含小數),分配陣列記憶體空間,放入數字

int howmanyfigs(char* pc)//統計串中有多少個數

}return numfig;

}void getnumbers(char* pc,double* buffer)//把串中的數放入double型陣列

if((*p) == '.')

}p--;

buffer[i++] = m + m2;

m = 0,n = 0,m2 = 0;n2 = 0;}}

}3.檢索串中運算子的個數,分配空間,放入陣列。

int howmanyopts(char* pc)

return numopts;

}void getopts(char* pc,opt* buffer)}}

4.排序,為運算子陣列中的元素按運算子優先順序排序,同等優先順序按自然左右順序排序

void paixv(opt array,int elementsnum)//對操作符陣列按優先順序排序

if(indexmax != j)

else if(array[indexnaturemin].order == array[j].order)//在優先順序相同的情況下比較自然優先順序}}

5.計算,按運算子陣列中的優先序按部計算,中間結果仍放入數字陣列中作為下一步計算的運算元。

struct message

;int checkfilter(int index,int checktohere,message* messbuf)

return index;

}double calc(double* numbersbuf,opt* optsbuf,message* messbuf,int optbuflength)

numbersbuf[indexlft] = optsbuf[i].ans;

messbuf[i].indexnew = indexlft;

messbuf[i].indexold = indexrgt;

}return numbersbuf[indexlft];//optsbuf[i-1].ans;

}6.試用

void main()

綜合//m.cpp

#include

struct opt

;void paixv(opt array,int elementsnum)//對操作符陣列按優先順序排序

if(indexmax != j)

else if(array[indexnaturemin].order == array[j].order)//在優先順序相同的情況下比較自然優先順序}}

int howmanyfigs(char* pc)//統計串中有多少個數

}return numfig;

}void getnumbers(char* pc,double* buffer)//把串中的數放入double型陣列

if((*p) == '.')

}p--;

buffer[i++] = m + m2;

m = 0,n = 0,m2 = 0;n2 = 0;}}

}int howmanyopts(char* pc)

return numopts;

}struct message

;int checkfilter(int index,int checktohere,message* messbuf)

return index;

}double calc(double* numbersbuf,opt* optsbuf,message* messbuf,int optbuflength)

numbersbuf[indexlft] = optsbuf[i].ans;

messbuf[i].indexnew = indexlft;

messbuf[i].indexold = indexrgt;

}return numbersbuf[indexlft];//optsbuf[i-1].ans;

}void getopts(char* pc,opt* buffer)}}

void main()

字串 四則運算

題目大意 有字串表示的乙個四則運算表示式,要求計算出該表示式的正確數值。四則運算即 加減乘除 另外該表示式中的數字只能是1位 數值範圍0 9 另若有不能整除的情況,按向下取整處理,eg 8 3得出值為2。若有字串 8 7 2 9 3 計算出其值為19。2012年華為上機的乙個題目 題目思路 建立棧分...

字串的四則運算

public string addstrings string num1,string num2 if b 0 tmp 10 return sb.reverse tostring 題目二 字串相減 給定兩個字串形式的非負整數 num1 和num2 計算它們的差。預設num1比num2大 注 不能使用...

字串的四則運算

四則運算,最常用的當然是逆波蘭方法,現將表示式由中綴表示式轉化為字尾表示式,然後再使用棧計算即可。這兩步下來,估計沒有三四百行 是實現不了的。中綴表示式轉字首字尾表示式 將中綴表示式轉換為字尾表示式的演算法思想 數字時,加入字尾表示式 運算子 a.若為 入棧 b.若為 則依次把棧中的的運算子加入字尾...