poj 2849 brainf*ck

brainf*ck,其实就是brainfuck,一种语言,http://zh.wikipedia.org/wiki/Brainfuck


模拟题
#include <stdio.h>
#include 
<string.h>

const int M=32768;
unsigned 
char str[M];
char in[200000], cmd[200000];
int n;

int main()
{

    scanf("%d%*c"&n);
    
for ( int cases = 0 ; cases < n ; cases++ )
    {
        
int t=0, i, j, point = 0;
        
while ( gets(in), in[0!= 'e' )
        {
            
for ( i = 0 ; in[i] ; i++ )
            {
                
if ( ' ' == in[i] ) continue;
                
else if ( '%' == in[i] ) break;
                
else if ( '[' == in[i] ) t++;
                
else if ( ']' == in[i] ) t--;
                cmd[point
++]= in[i];
            }
        }
        cmd[point]
=0;
        printf(
"PROGRAM #%d:\n", cases+1);
        
if ( t != 0 )
        {
            printf(
"COMPILE ERROR\n");
            
continue;
        }
        
int p= 0;
        memset (str, 
0sizeof(str));
        
for ( i = 0 ; cmd[i] ; i++ )
        {
            
if ( cmd[i] == '>' )
                p
=(p+1)%M;
            
else if ( cmd[i] == '<' )
                p
=(p+M-1)%M;
            
else if ( cmd[i] ==  '+' )
                str[p]
++;
            
else if ( cmd[i] ==  '-' )
                str[p]
--;
            
else if ( cmd[i] ==  '.' )
                putchar(str[p]);
            
else if ( cmd[i] ==  '[' && !str[p] )
            {
                i
++;
                
for ( t = 10 != t ; i++ )
                {
                    
if ( '[' == cmd[i] ) t++;
                    
else if ( ']' == cmd[i] ) t--;
                }
                i
--;
            }
            
else if ( cmd[i] ==  ']' && str[p] )
            {
                i
--;
                
for ( t = -10 != t ; i-- )
                {
                    
if ( '[' == cmd[i] ) t++;
                    
else if ( ']' == cmd[i] ) t--;
                }
                i
++;
            }
        }
        putchar(
10);
    }
    
return 0;
}

posted on 2011-08-17 00:01 purplest 阅读(317) 评论(0)  编辑 收藏 引用 所属分类: 模拟


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论