条件写死了是好做……
假如,我是说假如,有一道题形式与此题相似,但是要以多位数形式给变量赋值……
那可真是一道好题。
做题的时候有参考题解 P1597 【语句解析】 - @化学小哥的做法,但是不知道为啥,我在输入结束后程序不给我输出并停止执行,但在我 Ctrl+C 干进程后能看到第一个变量已经赋好了值……搞不懂。
道阻且长啊。
题目背景
木有背景……
题目描述
一串长度不超过 $255$ 的 PASCAL 语言代码,只有 $a,b,c$ 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];。未赋值的变量值为 $0$ 输出 $a,b,c$ 的值。
输入格式
一串符合语法的 PASCAL 语言,只有 $a,b,c$ 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 $0$。
输出格式
输出 $a,b,c$ 最终的值。
样例 #1
样例输入 #1
a:=3;b:=4;c:=5;
样例输出 #1
3 4 5
提示
输入的 PASCAL 语言长度不超过 $255$。
代码部分
//P1597 语句解析
//https://www.luogu.com.cn/problem/P1597
//条件写死了是好做……
//假如,我是说假如,有一道题让给多位数赋值……那可真是一道好题……
//https://www.luogu.com.cn/record/87683311
#include<iostream>
using namespace std;
int n[3];
string cc;
int main(){
cin>>cc;
for(int i=0;i<cc.length();i++){
if(cc[i]=='='){
int op=cc[i-2]-'a';
n[op]=cc[i+1]>='0'&&cc[i+1]<='9'?cc[i+1]-'0':n[cc[i+1]-'a'];
}
}
printf("%d %d %d\n",n[0],n[1],n[2]);
return 0;
}