
Ребят, помогите плиз!!!!
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Написать программу-интерпретатор, вычисляящую значение выражения, вводимого с клавиатуры в виде строки вида - 12 + 173/27 - 15


Именно такой уровень сложности?
Без скобок, синусов и косинусов?
Без скобок, синусов и косинусов?
Ни что так не ограничивает фантазию программиста, как компилятор...
Cуть в том что это фактически калькулятор только действия выолняються не как обычно(сначала умножение сложение) а вот как числа идут
Так в чем проблема? Выложи хотя бы свои наработки.
Читаешь число до знака, потом знак, число и вычисляешь значение выражения.
Читаешь число до знака, потом знак, число и вычисляешь значение выражения.
Проблема заключаеться в том, что наработок никаких нет и не предвидеться, и прогу просит нарыть где либо младший брат--студент, который записался на 1 курс факультета где весьма жестко дерут программирование или он не успевает или халтурит...хз что, но нароботок в данной программе нет
Прога несложная.
Пусть есть две переменных(операнды) и набор функций(+-*/).
Читаем первое число в первую переменную, второе - во вторую.
Выполняем над переменными нужную операцию, помещая результат в первую переменную. Далее читаем каждое следующее число во вторую переменную и выполняем нужную операцию, занося результат в первый регистр. Таким образом, в конце разбора выражения получим в первой переменной результат вычисления.
Пусть есть две переменных(операнды) и набор функций(+-*/).
Читаем первое число в первую переменную, второе - во вторую.
Выполняем над переменными нужную операцию, помещая результат в первую переменную. Далее читаем каждое следующее число во вторую переменную и выполняем нужную операцию, занося результат в первый регистр. Таким образом, в конце разбора выражения получим в первой переменной результат вычисления.
Ни что так не ограничивает фантазию программиста, как компилятор...
В целом, это чудесная новость с тем фактом что паскаля я не знаю 

Че-то здесь вообще мало кто паскаль знает
.
Только и слышно - "не знаю", "не знаю"...
Вот, решил из чистого интереса.
[syntax='Delphi']
program Parser;
const
NCH=['0'..'9'];
var
Exp:String;
R1,R2:Real;
Operands:array[1..128]of integer;
Operators:String;
OC,I:Integer;
function Parse(E:String):Integer;
var
I,OP,CNT,C:integer;
S:String;
begin
S:='';
for I:=1 to Length(E)+1do
begin
if (E in NCH) then
S:=S+E
else
begin
Val(S,OP,C);
Inc(CNT);
Operands[CNT]:=OP;
Operators:=Operators+E;
S:='';
end;
end;
Parse:=CNT;
end;
begin
Writeln('Введите выражение:');
ReadLn(Exp);
OC:=Parse(Exp);
R1:=Operands[1];
for I:=2 to OC do
begin
R2:=Operands;
case Operators[I-1] of
'+':R1:=R1+R2;
'-':R1:=R1-R2;
'*':R1:=R1*R2;
'/':R1:=R1/R2;
end;
end;
writeln(R1:0:3);
Readln;
end.
[/syntax]

Только и слышно - "не знаю", "не знаю"...
Вот, решил из чистого интереса.
[syntax='Delphi']
program Parser;
const
NCH=['0'..'9'];
var
Exp:String;
R1,R2:Real;
Operands:array[1..128]of integer;
Operators:String;
OC,I:Integer;
function Parse(E:String):Integer;
var
I,OP,CNT,C:integer;
S:String;
begin
S:='';
for I:=1 to Length(E)+1do
begin
if (E in NCH) then
S:=S+E
else
begin
Val(S,OP,C);
Inc(CNT);
Operands[CNT]:=OP;
Operators:=Operators+E;
S:='';
end;
end;
Parse:=CNT;
end;
begin
Writeln('Введите выражение:');
ReadLn(Exp);
OC:=Parse(Exp);
R1:=Operands[1];
for I:=2 to OC do
begin
R2:=Operands;
case Operators[I-1] of
'+':R1:=R1+R2;
'-':R1:=R1-R2;
'*':R1:=R1*R2;
'/':R1:=R1/R2;
end;
end;
writeln(R1:0:3);
Readln;
end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Компилятор выдает ошибку...там какая то путаница с переменной
function Parse(E:String):Integer;
var
I,OP,CNT,C:integer;
S:String;
begin
S:='';
for I:=1 to Length(E)+1do
begin
if (E in NCH) then
В последней строке выдаеться Unknow identifier
function Parse(E:String):Integer;
var
I,OP,CNT,C:integer;
S:String;
begin
S:='';
for I:=1 to Length(E)+1do
begin
if (E in NCH) then
В последней строке выдаеться Unknow identifier
Код: Выделить всё
[i] if (E in NCH) then
Там
Код: Выделить всё
if (E[i] in NCH) then
Ни что так не ограничивает фантазию программиста, как компилятор...