1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | -- Calculator3 with Ada.Text_IO, Ada.Integer_Text_IO; use Ada.Text_IO, Ada.Integer_Text_IO; procedure Calculator3 is First, Second, Result : Integer; Operator : Character; Valid : boolean; --Skip-spaces procedure Skip_spaces is Next : Character; EndLine : boolean; begin Look_ahead (Next, EndLine); while Next=' ' or Next=ASCII.ht or Endline=true loop if Endline=true then Skip_Line; else Get (Next); end if; Look_ahead (Next, Endline); end loop; end Skip_spaces; --Look_for_digit procedure Look_for_digit is Next : character; Endline : boolean; begin skip_spaces; Look_ahead (Next, Endline); If not (next in '0' .. '9') then Put ("Character is invalid, number is expected. "); Valid := false; Skip_Line; end if; end look_for_digit; --Look_for_operator procedure look_for_operator is Next : character; Endline : boolean; begin skip_spaces; Look_ahead (Next, Endline); If not (Next = '+' or Next = '-' or Next = '*' or Next = 'x' or Next = '/') then Put ("Operator is invalid. "); Valid :=false; Skip_Line; end if; end look_for_operator; --body begin valid:=false; while valid=false loop Put ("What do you want me to calculate? "); valid := true; Look_for_digit; while Valid = true loop Get (First); Look_for_operator; Get (Operator); Look_for_digit; Get (Second); end loop; end loop; if Operator = '+' then Result := First+Second; elsif Operator = '-' then Result := First-Second; elsif Operator = '*' or Operator = 'x' then Result := First*Second; elsif Operator = '/' then Result := First/Second; else Put ("Invalid operator "); Put (Operator); New_Line; valid:=false; end if; if valid=true then Put (First, width => 3); Put (Operator); Put (Second, width => 0); Put ("="); Put (Result, width =>0); New_Line; end if; end Calculator3; |
LS0gQ2FsY3VsYXRvcjMKCndpdGggQWRhLlRleHRfSU8sIEFkYS5JbnRlZ2VyX1RleHRfSU87CnVzZSBBZGEuVGV4dF9JTywgQWRhLkludGVnZXJfVGV4dF9JTzsKcHJvY2VkdXJlIENhbGN1bGF0b3IzIGlzCglGaXJzdCwgU2Vjb25kLCBSZXN1bHQgOiBJbnRlZ2VyOwoJT3BlcmF0b3IgOiBDaGFyYWN0ZXI7CglWYWxpZCA6IGJvb2xlYW47Ci0tU2tpcC1zcGFjZXMJCglwcm9jZWR1cmUgU2tpcF9zcGFjZXMgaXMKCQlOZXh0IDogQ2hhcmFjdGVyOwoJCUVuZExpbmUgOiBib29sZWFuOwoJYmVnaW4KCQlMb29rX2FoZWFkIChOZXh0LCBFbmRMaW5lKTsKCQl3aGlsZSBOZXh0PScgJyAgb3IgTmV4dD1BU0NJSS5odCBvciBFbmRsaW5lPXRydWUgbG9vcAoJCWlmIEVuZGxpbmU9dHJ1ZSB0aGVuCgkJCVNraXBfTGluZTsKCQllbHNlCgkJCUdldCAoTmV4dCk7CgkJZW5kIGlmOwoJCUxvb2tfYWhlYWQgKE5leHQsIEVuZGxpbmUpOwoJCWVuZCBsb29wOwoJZW5kIFNraXBfc3BhY2VzOwotLUxvb2tfZm9yX2RpZ2l0Cglwcm9jZWR1cmUgTG9va19mb3JfZGlnaXQgaXMKCQlOZXh0IDogY2hhcmFjdGVyOwoJCUVuZGxpbmUgOiBib29sZWFuOwoJYmVnaW4KCXNraXBfc3BhY2VzOwoJTG9va19haGVhZCAoTmV4dCwgRW5kbGluZSk7CglJZiBub3QgKG5leHQgaW4gJzAnIC4uICc5JykgdGhlbgoJCVB1dCAoIkNoYXJhY3RlciBpcyBpbnZhbGlkLCBudW1iZXIgaXMgZXhwZWN0ZWQuICIpOwoJCVZhbGlkIDo9IGZhbHNlOwoJCVNraXBfTGluZTsKCWVuZCBpZjsKCWVuZCBsb29rX2Zvcl9kaWdpdDsKLS1Mb29rX2Zvcl9vcGVyYXRvcgoJcHJvY2VkdXJlIGxvb2tfZm9yX29wZXJhdG9yIGlzCgkJTmV4dCA6IGNoYXJhY3RlcjsKCQlFbmRsaW5lIDogYm9vbGVhbjsKCWJlZ2luCglza2lwX3NwYWNlczsKCUxvb2tfYWhlYWQgKE5leHQsIEVuZGxpbmUpOwoJSWYgbm90IChOZXh0ID0gJysnIG9yIE5leHQgPSAnLScgb3IgTmV4dCA9ICcqJyBvciBOZXh0ID0gJ3gnIAoJCW9yIE5leHQgPSAnLycpIHRoZW4KCQlQdXQgKCJPcGVyYXRvciBpcyBpbnZhbGlkLiAiKTsKCQlWYWxpZCA6PWZhbHNlOwoJCVNraXBfTGluZTsKCWVuZCBpZjsKCWVuZCBsb29rX2Zvcl9vcGVyYXRvcjsKLS1ib2R5CmJlZ2luCgl2YWxpZDo9ZmFsc2U7Cgl3aGlsZSB2YWxpZD1mYWxzZSBsb29wCglQdXQgKCJXaGF0IGRvIHlvdSB3YW50IG1lIHRvIGNhbGN1bGF0ZT8gIik7Cgl2YWxpZCA6PSB0cnVlOwoJTG9va19mb3JfZGlnaXQ7Cgl3aGlsZSBWYWxpZCA9IHRydWUgbG9vcAoJCUdldCAoRmlyc3QpOwoJCUxvb2tfZm9yX29wZXJhdG9yOwoJCUdldCAoT3BlcmF0b3IpOwoJCUxvb2tfZm9yX2RpZ2l0OwoJCUdldCAoU2Vjb25kKTsKCWVuZCBsb29wOwoJZW5kIGxvb3A7CglpZiBPcGVyYXRvciA9ICcrJyB0aGVuCgkJUmVzdWx0IDo9IEZpcnN0K1NlY29uZDsKCWVsc2lmIE9wZXJhdG9yID0gJy0nIHRoZW4KCQlSZXN1bHQgOj0gRmlyc3QtU2Vjb25kOwoJZWxzaWYgT3BlcmF0b3IgPSAnKicgb3IgT3BlcmF0b3IgPSAneCcgdGhlbgoJCVJlc3VsdCA6PSBGaXJzdCpTZWNvbmQ7CgllbHNpZiBPcGVyYXRvciA9ICcvJyB0aGVuCgkJUmVzdWx0IDo9IEZpcnN0L1NlY29uZDsKCWVsc2UKCQlQdXQgKCJJbnZhbGlkIG9wZXJhdG9yICIpOwoJCVB1dCAoT3BlcmF0b3IpOwoJCU5ld19MaW5lOwoJCXZhbGlkOj1mYWxzZTsKCWVuZCBpZjsKCWlmIHZhbGlkPXRydWUgdGhlbgkJCgkJUHV0IChGaXJzdCwgd2lkdGggPT4gMyk7CgkJUHV0IChPcGVyYXRvcik7CgkJUHV0IChTZWNvbmQsIHdpZHRoID0+IDApOwoJCVB1dCAoIj0iKTsKCQlQdXQgKFJlc3VsdCwgd2lkdGggPT4wKTsKCQlOZXdfTGluZTsKCWVuZCBpZjsKZW5kIENhbGN1bGF0b3IzOwo=
-
upload with new input
-
result: Runtime error time: 0.02s memory: 1868 kB signal: -1
4+3
What do you want me to calculate?
raised ADA.IO_EXCEPTIONS.END_ERROR : a-textio.adb:463
-
result: Runtime error time: 0.02s memory: 1868 kB signal: -1
What do you want me to calculate?
raised ADA.IO_EXCEPTIONS.END_ERROR : a-textio.adb:1919



