Другие языки программирования и технологии

Программа На паскале 5+5*5=?

Программа На паскале 5+5*5=? ,Вводится Всё в одну строковую переменную разделить и ешё сделать приоритет на умножение и деление .
типа вот переменные:
a:=s[1]
b:=s[3]
c:=s[5]
v1:=s[2]
v2:=s[4]
Помогите а то в тупике я (((
Задачка непростая. У меня получилось так:
program Project1;
var i,l:integer;
s: string;
a:array [ 1..100] of integer;
flag:boolean;
begin
s:='5+5*5=';
l:=length(s);
for i:=1 to length(s) do
begin
case s[ i] of
'0'..'9' : val(s[ i],a[ i]);
'+' : a[ i]:=-1;
'*' : a[ i]:=-2;
'=' : l:=i-1;
end;
end;
repeat
flag:=false;
for i:=1 to l do
if a[ i]=(-2) then
begin
flag:=true;
a[ i-1]:=a[ i-1]*a[ i+1];
a[ i]:=0; a[ i+1]:=a[ i-1];
end;
until flag;
repeat
flag:=false;
for i:=1 to l do
if a[ i]=(-1) then
begin
flag:=true;
a[ i-1]:=a[ i-1]+a[ i+1];
a[ i]:=0; a[ i+1]:=a[ i-1];
end;
until flag;
writeln(a[ 1]);
end.

Это Free Pascal (Lazarus)
Возможно для каких-то случаев решение окажется неправильным.
Ernest Lyckovski
Ernest Lyckovski
54 145
Лучший ответ
Условие непонятно. Зачем что-то вводить? Если надо посчитать 5+5*5, то ни вводить, ни считать ничего не надо, достаточно написать
begin write(30) end.
Ну судя по вашему "коду" - задачка будет не из легких.
В общем случае, то что вам надо сделать - называется "лексический анализ"
то есть надо разбить входную строку на лексемы, определить их назначение, создать граф выражения, и вычислить его.
Задача не на 10 минут, даже для проффи.
Строка - массив символов. Запускаешь цикл и перебираешь все элементы, как только обнаруживаешь нужный элемент делаешь с ним какие то действия:

for i := 1 to length(stroka) do begin
if stroka = ch then begin
// Какие-то действия с найденным элементом.
end;

end;