❶ 求按照一個演算法寫一個C語言程序
/*
你提供的那個代碼是偽代碼,我幫你寫成了
C
的代碼。
你提供的偽代碼,我用注釋寫到了對應的行的後面。
根據你提供的代碼還只能轉換含有一個字母或
[0,9]
區間內的數字的解析式。
補充了一點棧的基本演算法
執行後輸出:
原式子(中綴表達式):
a+b*c
新式子(後綴表達式):
a
b
c
*
+
代碼使用
Linux
+
GCC
3.4.5
編譯通過
July.28th,2009
14:30pm.
main()
在最下邊
*/
#include
struct
_stack
{
char
__stack[1024];
int
__top;
};
//
模擬棧
inline
init_stack(
struct
_stack
*
p_stack
)
//
初始化棧
{
int
i
=
0;
for(
i
=
0;
i
<=
1024;
i++
)
p_stack->__stack[i]
=
'\0';
p_stack->__top
=
0;
}
inline
void
push(
struct
_stack
*
p_stack,
char
p_op
)
//
進棧
{
p_stack->__stack[p_stack->__top]
=
p_op;
(
p_stack->__top
)++;
}
inline
char
pop(
struct
_stack
*
p_stack
)
//
出棧
{
(
p_stack->__top
)--;
return
p_stack->__stack[p_stack->__top];
}
inline
int
precedence(
char
p_char
)
//
比較優先順序
{
if(
p_char
==
'+'
||
p_char
==
'-'
)
return
1;
else
if(
p_char
==
'/'
||
p_char
==
'*'
)
return
2;
else
return
0;
}
char
postString[1024];
char
*
infix_to_postfix(
char
*inString
)
{
int
l
=
strlen(
inString
);
struct
_stack
stack;
char
p
=
'\0';
int
i
=
0;
char
c
=
'\0';
l
=
strlen(
inString
);
//
l
<-
Length
of
inString
for(
i
=
0;
i
<=
1024;
i++
)
postString[i]
=
'\0';
//
postString
<-
empty
string
init_stack(
&stack
);
//
stack
<-
Empty
stack
for(
i
=
0;
i
<=
l;
i++
)
//
for
i
<-
0
to
l
{
c
=
inString[i];
//
c
<-
inString[i]
if(
(
c
>=
'0'
&&
c
<=
'9'
)||(
c
>=
'a'
&&
c
<=
'z'
)||(
c
>=
'A'
&&
c
<=
'Z'
)
)
//
if
c
is
an
operand
{
if(
postString[0]
==
'\0'
){postString[0]
=
c;continue;}
sprintf(
postString,
"%s
%c",
postString,
c
);
//
add
c
at
the
end
of
postString
}//
end
if
if(
c
==
'+'
||
c
==
'-'
||
c
==
'*'
||
c
==
'/'
)
//
if
c
is
an
operator
{
if(
stack.__top==0
||
precedence(
stack.__stack
[stack.__top]
)<
precedence(
c
)
)
//
if
stack
is
empty
OR
if
precedence(
stack_top
)<
precedence(
c
)
{
push(
&stack,
c
);
//
push
c
into
stack
}
else
{
while(
precedence(
stack.__stack
[stack.__top]
)>=
precedence(
c
)
)
//
while
precedence(
stack_top
)>=
precedence(
c
)
{
p
=
pop(
&stack
);
//
p
<-
pop
from
stack
sprintf(
postString,
"%s
%c",
postString,
p
);
//
add
p
at
the
end
of
postString
}
//
end
while
push(
&stack,
c
);
//
push
c
into
stack
}
//
end
if
}
//
end
if
}
//
end
for
while(
stack.__top
)
//
while
stack
is
not
empty
{
p
=
pop(
&stack
);
//
p
<-
pop
from
stack
sprintf(
postString,
"%s
%c",
postString,
p
);
//
add
p
at
the
end
of
postString
}
//
end
while
return
postString;
}
int
main(
)
{
char
exp[]
=
"a+b*c";
char
*
p
=
0;
p
=
infix_to_postfix(
exp
);
printf(
"原式子(中綴表達式):\n\t%s\n新式子(後綴表達式):\n\t%s\n",
exp,
p
);
return
0;
}
❷ if(!is->else)的意思
這段代碼不完整,無法確定其具體含義。但是,假設is和else都是變數或者函數,那麼if(!is->else)的意思可能是:如果is指針指向的else變數的值為假(false),則執行if語句塊內的代碼。其中"!"符號是邏輯非運算符鏈森,它將一個值取反,即如卜嘩果一個值型喚行為真(true),則取反後為假(false),反之亦然。
❸ 計算該項目進度偏差、費用偏差、進度執行指標和費用執行指標
應該是利用贏得值法的三個參數和四個評價指標來解答此題,並用橫道圖、表格或曲線法來分析。
❹ 偏差率計算公式有哪些
偏差率計算公式:偏差率=(實際值-理論值)/理論值*100%。
偏差率是指實際值比理論值或者估計值的偏差的程度,用於表徵營業業績、實驗效果、工程進度等的落實情況。總體標准差是反映研究總體內個體之間差異程度的一種統計指標,用σ表示。總體方差是一組資料中各數值與謹判其算術平均數離差平方和的平均數。總體標准差則是總體方差的平方根。
相關信息:
對偏差率而言,我們的目標是希望偏差率=0,如果實際偏差率的平均值等於0或接近0時,可以將估算偏差率統統加上某個值,讓其脫鉛弊離0值附近,再進行變異系數的比較。這種處理等於標准差沒有變化,均值增加了,CV值都變小了,CV值的相對順序沒有發生改變,可以進行排序比較。
偏差率可以畫控制圖進行分析。但是需要注意如果是同一個項目的不同時間段的偏差率可能存在自相關性,即上一個周期的偏差率與下一個周期的偏差率存在相關性。此時,不適合直接對偏差率畫控制圖進行分析,而可以對其槐晌族移動極差畫控制圖進行分析。
❺ 預算與實際偏差如何計算
預算和實際差異,差異率,同比或環比,通過不同角度來分析預算執行情況。建議可以藉助專業的軟體工具,像我們就在用融智天的全面預算管理系統,支持多種執行分析方式,還能圖形化占線預算與實際的對比結果,特別省心。