❶ 求按照一个算法写一个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值的相对顺序没有发生改变,可以进行排序比较。
偏差率可以画控制图进行分析。但是需要注意如果是同一个项目的不同时间段的偏差率可能存在自相关性,即上一个周期的偏差率与下一个周期的偏差率存在相关性。此时,不适合直接对偏差率画控制图进行分析,而可以对其槐晌族移动极差画控制图进行分析。
❺ 预算与实际偏差如何计算
预算和实际差异,差异率,同比或环比,通过不同角度来分析预算执行情况。建议可以借助专业的软件工具,像我们就在用融智天的全面预算管理系统,支持多种执行分析方式,还能图形化占线预算与实际的对比结果,特别省心。