首页 > 其他 > 详细

处理字符getchar()-------Puzzle

时间:2020-04-10 16:03:35      阅读:47      评论:0      收藏:0      [点我收藏+]

题目链接:https://vjudge.net/problem/UVA-227#author=0

题解:这个题不难但需要注意很多点

1.需要输入空格,而cin不读取空格,所以需要getchar,而getchar与NULL联系时,优先级过低,需要加()。

2.每次都需要换行,换行需要getchar()

3.我一开始就报错Runtime error,原因是,最后就算到0到6,越界,也进行运算,那么行数就会变为-1,就越界了,解决办法时加个if

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char qi[7][7];
int main()
{
    int cou=0;
    memset(qi,0,sizeof(qi));
    while((qi[1][1]=getchar())!=NULL)//cin自动忽略空格,而getchar优先级比较低,需要加()
    {
        cou++;
        int flag=1;
        if(qi[1][1]==‘Z‘) break;
        for(int i=2;i<=5;i++)
            qi[1][i]=getchar();
        getchar();
        for(int j=2;j<=5;j++)
        {
           for(int i=1;i<=5;i++)
                qi[j][i]=getchar();
            getchar();
        }
        int bx,by;
        for(int i=1;i<=5;i++)
            for(int j=1;j<=5;j++)
            if(qi[i][j]==‘ ‘)
        {
            bx=i;
            by=j;
        }
        char ch,t;
        for(;;)
        {
            ch=getchar();
            if(ch==‘0‘) break;

            if(flag==1)
            {
               if(ch==‘A‘)
           {
                qi[bx][by]=qi[bx-1][by];
                qi[bx-1][by]=‘ ‘;
                bx--;
                if(bx==0) flag=0;
            }
            else if(ch==‘B‘)
            {
                qi[bx][by]=qi[bx+1][by];
                qi[bx+1][by]=‘ ‘;
                bx++;
                if(bx==6) flag=0;
            }
            else if(ch==‘L‘)
            {
                qi[bx][by]=qi[bx][by-1];
                qi[bx][by-1]=‘ ‘;
                by--;
                if(by==0) flag=0;
            }
            else if(ch==‘R‘)
            {
                qi[bx][by]=qi[bx][by+1];
                qi[bx][by+1]=‘ ‘;
                by++;
                if(by==6) flag=0;
            }
            }
        }
        getchar();
        if(cou>1) cout<<endl;
        cout<<"Puzzle #"<<cou<<":"<<endl;
        if(flag==0) cout<<"This puzzle has no final configuration."<<endl;
        else
        {
            for(int i=1;i<=5;i++)
            {
                for(int j=1;j<=5;j++)
                {
                    if(j!=1) cout<<‘ ‘;
                    cout<<qi[i][j];
                }
                cout<<endl;
            }
        }
        memset(qi,0,sizeof(qi));
    }
    return 0;
}

处理字符getchar()-------Puzzle

原文:https://www.cnblogs.com/Joe2019/p/12672961.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!