| 
 | 
вернуться в форум{$IFDEF DEBUG} Uses CalcTime, Debug; {$ENDIF} label a; var   STACKPos : word;   STACK : array [1..10010] of set of (Skobki, Comment, Txt);   c, cnext : char;   begin   c := #0; STACKPos := 1;   STACK [STACKPos] := [];   repeat Read (cnext) until cnext > #13;   while not (cnext = #26) do begin     c := cnext;     repeat Read (cnext) until cnext in [#26, #32..#255];     if (c = '(') then begin       Inc (STACKPos);       if cnext = '*' then begin         STACK [STACKPos] := [Comment];       end else begin         STACK [STACKPos] := [Skobki];       end;     end;     if not       (c in ['=', '+', '-', '*', '/',              '0'..'9', '(', ')']) then begin       Include (STACK [STACKPos], Txt);     end;     if (cnext = ')') then begin       if ((c = '*') and (STACK [STACKPos] = [Comment, Txt])) or         ((STACK [STACKPos] = [Comment]) or         (STACK [STACKPos] = [Skobki])) then begin           Dec (StackPos);           if StackPos = 0 then goto a;         end else if not (STACK [STACKPos] = [Comment, Txt]) then begin a:        WriteLn ('NO');           Halt;         end;     end;   end;   if (STACKPos = 1) {and (STACK [STACKPos] = [Txt])} then begin     WriteLn ('YES');   end else WriteLn ('NO'); end. Try this test case: (*) The answer should be NO   Good luck! > Try this test case: > (*) > The answer should be NO > > Good luck! Why No? (Because * is arithmetic expression)  |  
  | 
|