Основы объектно-ориентированного программирования на языке C# book | Page 178

8 Вправи pc++; break; case 12: proof[pc].IsAssertion = false; proof[pc].Operation = "IMPLICATION"; proof[pc].Arg1 = s[top++]; proof[pc].Arg2 = s[top++]; pc++; break; case 13: case 14: A = s[top++]; B = s[top++]; int[] x = new int[256], y = new int[256]; x[0] = A; y[0] = B; int count = 1; while (count > 0) { count--; if (proof[x[count]].Operation != proof[y[count ]].Operation) { count = -1; break; } else if (proof[x[count]].Operation == "NOT") { x[count] = proof[x[count]].Arg1; y[count] = proof[y[count]].Arg1; count++; } else if (proof[x[count]].Operation == " IMPLICATION") { int xc = x[count], yc = y[count]; x[count] = proof[xc].Arg1; y[count] = proof[yc].Arg1; count++; x[count] = proof[xc].Arg2; y[count] = proof[yc].Arg2; count++; } } if (count == 0) { if (code == 13) { proof[pc].IsAssertion = true; proof[pc].Operation = "IMPLICATION"; proof[pc].Arg1 = A; proof[pc].Arg2 = B; pc++; } else if (proof[A].IsAssertion || proof[B]. IsAssertion) { proof[A].IsAssertion = true; proof[B].IsAssertion = true; } } break; case 15: ; A = s[top++]; B = s[top++]; 178