Страница 1 из 2
Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 00:00
Styks
Написать программу-интерпретатор, вычисляящую значение выражения, вводимого с клавиатуры в виде строки вида - 12 + 173/27 - 15

Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 01:19
MOTOCoder
Именно такой уровень сложности?
Без скобок, синусов и косинусов?
Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 11:08
Styks
Cуть в том что это фактически калькулятор только действия выолняються не как обычно(сначала умножение сложение) а вот как числа идут
Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 11:38
drummer
Так в чем проблема? Выложи хотя бы свои наработки.
Читаешь число до знака, потом знак, число и вычисляешь значение выражения.
Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 11:41
Styks
Проблема заключаеться в том, что наработок никаких нет и не предвидеться, и прогу просит нарыть где либо младший брат--студент, который записался на 1 курс факультета где весьма жестко дерут программирование или он не успевает или халтурит...хз что, но нароботок в данной программе нет
Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 12:21
MOTOCoder
Прога несложная.
Пусть есть две переменных(операнды) и набор функций(+-*/).
Читаем первое число в первую переменную, второе - во вторую.
Выполняем над переменными нужную операцию, помещая результат в первую переменную. Далее читаем каждое следующее число во вторую переменную и выполняем нужную операцию, занося результат в первый регистр. Таким образом, в конце разбора выражения получим в первой переменной результат вычисления.
Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 12:23
Styks
В целом, это чудесная новость с тем фактом что паскаля я не знаю

Re: Ребят, помогите плиз!!!!
Добавлено: 07 июн 2008, 14:10
MOTOCoder
Че-то здесь вообще мало кто паскаль знает

.
Только и слышно - "не знаю", "не знаю"...
Вот, решил из чистого интереса.
[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]
Re: Ребят, помогите плиз!!!!
Добавлено: 08 июн 2008, 18:33
Styks
Компилятор выдает ошибку...там какая то путаница с переменной
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
Re: Ребят, помогите плиз!!!!
Добавлено: 08 июн 2008, 19:25
MOTOCoder