Untitled
By: a guest | Jan 22nd, 2010 | Syntax:
Ada | Size: 1.29 KB | Hits: 146 | Expires: Never
with Ada.Text_IO;
with Ada.Strings.Unbounded;
use Ada.Text_IO;
use Ada.Strings.Unbounded;
procedure CalcPlus is
function isNumber(c : character) return boolean is
begin
if Character'Pos(c) in 48..57 then return true; else return false; end if;
end isNumber;
function get_First_Part(a : string) return string is
n : integer;
begin
n:=1;
while (isNumber(a(n))) loop
n := n+1;
end loop;
return a(a'First..n-1);
end get_First_Part;
function get_Last_Part(a : string) return string is
n : integer;
begin
n:=1;
while (isNumber(a(n))) loop
n := n+1;
end loop;
return a(n+1..a'Last);
end get_Last_Part;
function get_Symbol(a : string) return character is
n : integer;
begin
n:=1;
while (isNumber(a(n))) loop
n := n+1;
end loop;
return a(n);
end get_Symbol;
expression : String (1 .. 2000);
char : character;
a, b, c : integer;
Last : Natural;
begin
Put("Enter expression: ");
Get_Line(Item => expression, Last => Last);
a:=Integer'Value(get_First_Part(expression(1..expression'Last)));
b:=Integer'Value(get_Last_Part(expression(1..expression'Last)));
char:=get_Symbol(expression(expression'first..Last));
if char='+' then c:=a+b;
elsif char='-' then c:=a-b;
elsif char='/' then c:=a/b;
elsif char='*' then c:=a*b;
end if;
Put("Answer: "&c'img);
end CalcPlus;