软件设计师的一道数据流图题,我按他的算法写出程序来
现在才发现05年印刷那本软件设计师考点分析很多错误,真是害人不浅啊
我看看资料想想,如果我只去一味追求解题技巧对我的编程能力一点帮助也没有
于是就做一些算法框架题后把算法用C写出来 这样才有提高
一动手就编程效率太差了,象现在画好框架图再“写”,可以说是“填”代码了。
所以通过考软设我经过一些没以前没注意提高的软件设计能力 比如文档书写 程序筐架的构造
要从一个光会编写小程序的菜鸟向能写大型软件的老鸟过渡才行
我想继续考软设的目的是提高能力,而不是仅仅那个证书而已
闲话少说
题目是比如
A={3,3,3,3,5,5,7,6,3,6,2,2,2,2,1,2}
变换后
B={4,3,2,5,-4,7,6,3,6,4,2,-2,1,1,2}
代码如下:
int
main(
int
argc,
char
*
argv[])
... {
int array[10]=...{1,3,4,4,4,4,3,3};
int Barray[50];
/**//*
for(int i=0;i<10;i++)
{
array[i]=rand()%4;
}
*/
bool _C;
if(array[0]==array[1])
...{
_C=true;
}
else
...{
_C=false;
}
int k1=0;
int k=1;
int pot=1;
int times=1;
Barray[1]=array[0];
while(pot < 10)
...{
if(array[pot-1]==array[pot])
...{
if(_C)
...{
times++;
}
else
...{
if(times>1)
...{
Barray[k1]=1-times;
k1=k;
k++;
Barray[k]=array[pot-1];
}
_C=true;
times=2;
}
}
else
...{
if(_C)
...{
Barray[k1]=times;
k1=k+1;
Barray[k+2]=array[pot];
k=k+2;
times=1;
_C=false;
}
else
...{
times++;
k++;
Barray[k]=array[pot];
}
}
pot++;
}
if(_C)
...{
Barray[k1]=times;
}
else
...{
Barray[k1]=-times;
}
for(int pos=0;pos<10;pos++)
...{
printf("%d ",array[pos]);
}
printf(" ");
pos=0;
while(Barray[pos]>=-50)
...{
printf("%d ",Barray[pos]);
pos++;
}
return 0;
}
... {
int array[10]=...{1,3,4,4,4,4,3,3};
int Barray[50];
/**//*
for(int i=0;i<10;i++)
{
array[i]=rand()%4;
}
*/
bool _C;
if(array[0]==array[1])
...{
_C=true;
}
else
...{
_C=false;
}
int k1=0;
int k=1;
int pot=1;
int times=1;
Barray[1]=array[0];
while(pot < 10)
...{
if(array[pot-1]==array[pot])
...{
if(_C)
...{
times++;
}
else
...{
if(times>1)
...{
Barray[k1]=1-times;
k1=k;
k++;
Barray[k]=array[pot-1];
}
_C=true;
times=2;
}
}
else
...{
if(_C)
...{
Barray[k1]=times;
k1=k+1;
Barray[k+2]=array[pot];
k=k+2;
times=1;
_C=false;
}
else
...{
times++;
k++;
Barray[k]=array[pot];
}
}
pot++;
}
if(_C)
...{
Barray[k1]=times;
}
else
...{
Barray[k1]=-times;
}
for(int pos=0;pos<10;pos++)
...{
printf("%d ",array[pos]);
}
printf(" ");
pos=0;
while(Barray[pos]>=-50)
...{
printf("%d ",Barray[pos]);
pos++;
}
return 0;
}