Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project5;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- const
- MAXIN = 100000;
- type
- time = record
- data: integer;
- ch: char;
- end;
- var
- i, p, sum, data, j, z, n: integer;
- s: string;
- ans: array [1..MAXIN] of time;
- ch: char;
- begin
- //readln(n);
- //for z := 1 to n do
- //begin
- p := 0;
- sum := 0;
- readln(s);
- s := ' ' + s;
- for i := 2 to length(s) do
- if (upcase(s[i]) in ['A'..'Z']) and (s[i + 1] = '-') and (s[i + 2] = '-') then
- begin
- inc(p);
- ans[p].ch := s[i];
- ans[p].data := (ord(s[i]) - 96);
- if (s[i - 1] = '-') then
- sum := sum - ans[p].data
- else
- sum := sum + ans[p].data;
- dec(ans[p].data);
- end
- else
- if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '-') and (s[i - 2] = '-') then
- begin
- inc(p);
- ans[p].ch := s[i];
- ans[p].data := (ord(s[i]) - 96) - 1;
- if (s[i - 3] = '-') then
- sum := sum - ans[p].data
- else
- sum := sum + ans[p].data;
- end
- else
- if (upcase(s[i]) in ['A'..'Z']) and (s[i + 1] = '+') and (s[i + 2] = '+') then
- begin
- inc(p);
- ans[p].ch := s[i];
- ans[p].data := (ord(s[i]) - 96);
- if (s[i - 1] = '-') then
- sum := sum - ans[p].data
- else
- sum := sum + ans[p].data;
- inc(ans[p].data);
- end
- else
- if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '+') and (s[i - 2] = '+') then
- begin
- inc(p);
- ans[p].ch := s[i];
- ans[p].data := (ord(s[i]) - 96) + 1;
- if (s[i - 3] = '-') then
- sum := sum - ans[p].data
- else
- sum := sum + ans[p].data;
- end
- else
- if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '-') then
- begin
- inc(p);
- ans[p].ch := s[i];
- ans[p].data := (ord(s[i]) - 96);
- sum := sum - ans[p].data;
- end
- else
- if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '+') then
- begin
- inc(p);
- ans[p].ch := s[i];
- ans[p].data := (ord(s[i]) - 96);
- sum := sum + ans[p].data;
- end
- else
- if (i = 2) and (upcase(s[i]) in ['A'..'Z']) then
- begin
- inc(p);
- ans[p].ch := s[2];
- ans[p].data := ord(s[2]) - 96;
- sum := sum + ans[p].data;
- end;
- writeln('Expression:', s);
- writeln('value = ', sum);
- for j := 2 to p do
- for i := p downto j do
- if (ans[i].ch < ans[i - 1].ch) then
- begin
- ch := ans[i].ch;
- ans[i].ch := ans[i - 1].ch;
- ans[i - 1].ch := ch;
- data := ans[i].data;
- ans[i].data := ans[i - 1].data;
- ans[i - 1].data := data;
- end;
- for i := 1 to p do
- writeln(ans[i].ch,' = ', ans[i].data);
- //end;
- readln;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement