打了两节课的代码,将近两千代码量; 最后得了五十分,有没有dalao可以来帮忙看看。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
short a[10010];
int i=0;
char in,junk;
while ( cin >> in ){
switch(in){
case 't':a[++i] = 1;break;//true
case 'o':a[++i] = 22;break;//or
case 'f':a[++i] = 2;break;//false
case 'a':a[++i] = 208;break;//and
case 'n':a[++i] = 107;break;//not
default :cout << "error" <<endl;return 0;
}
switch(a[i]){
case 1:{
for (int i = 1;i <= 4;i ++){
cin>>junk;
}
break;
}
case 22:{
for (int i = 1;i <= 3;i ++){
cin>>junk;
}
break;
}
case 2:{
for (int i = 1;i <= 5;i ++){
cin>>junk;
}
break;
}
case 208:{
for (int i = 1;i <= 3;i ++){
cin>>junk;
}
break;
}
case 107:{
for (int i = 1;i <= 3;i ++){
cin>>junk;
}
break;
}
}
}
for (int j = 1; j <= i ; j ++){
if ( a[j] != 0 )
if ( a[j] == 107) {
switch(a[j + 1]){
case 1:a[j + 1] = 2;break;
case 0:a[j + 1] = 1;break;
}
a[j] = 0;
}
}
for (int j = 1; j <= i ; j ++){
if ( a[j] != 0 )
if ( a[j] == 208) {
if (a[j-1]==1&&a[j+1]==1) a[j-1]=1;
else if (a[j-1]==0&&a[j+1]==0) a[j-1]=0;
else if ((a[j-1]==1&&a[j+1]==0)||(a[j-1]==1&&a[j+1]==0)) a[j-1]=0;
a[j]=a[j+1]=0;
}
}
for (int j = 1; j <= i ; j ++){
if ( a[j] != 0 )
if ( a[j] == 22) {
if (a[j-1]==1&&a[j+1]==1) a[j-1]=1;
else if (a[j-1]==0&&a[j+1]==0) a[j-1]=0;
else if ((a[j-1]==1&&a[j+1]==0)||(a[j-1]==1&&a[j+1]==0)) a[j-1]=1;
a[j]=a[j+1]=0;
}
}
for (int j = 1; j <= i ; j ++){
switch(a[j]){
case 1:cout << "true" <<endl;return 0;
case 0:cout << "false" <<endl;return 0;
default :cout<< "error" <<endl;return 0;
}
}
return 0;
}