Добрый день!
Подскажите пожайлуста как это оформить(решить задачку)?
сама задача:
Дана цепочка символов вида "число1+число2*число3". Вычислить числовое значение выражения и напечатать.
цепочка вводится с клавиатуры (строка2+3*5), необходимо сначало определить 1-ю переменную, знак вычисления, 2-ю переменную, знак, 3-ю, и вычислить.на 2 числа вроде работает, а на 3 не хочет.
заранее благодарен.
а что пробовал? выкладывай код, поможем
program raschet;
var
str:string[50];
zs:string[4];
si:char;
a1,a2,a3:real;
i,is,p1,p2,p3:integer;
begin
writeln('введите строку с выражением');
readln(str);
zs:='+-*/';
si:=' ';
for i:=1 to 4 do
if pos(zs[i],str)>0 then
begin
is:=pos(zs[i],str);
si:=zs[i];
end;
if si=' ' then writeln('неправильное выражение')
else
begin
val(copy(str,1,is-1),a1,p1);
val(copy(str,is+1,length(str)-is),a2,p2);
{val(copy(str,is+1,length(str)-is),a3,p3);}
end;
writeln(a1);
writeln(p1);
writeln(a2);
writeln(p2);
end.
а чтоб для всех операций, если кто нить введет не так как задумано?
Ок, только + и *
Да, + и * остальное не нужно
uses crt;Так же можешь проверить если '+' находится после '*', то выдать сообщение об ошибке или
var
a,b,c,k:integer;
d:longint;
s:string;
begin
clrscr;
readln(s);
while pos(' ',s)>0 do delete(s,pos(' ',s),1); // удаляем пробелы
writeln(s);
val(copy(s,1,pos('+',s)-1),a,k); // если хочешь, то можешь отслеживать ошибки
delete(s,1,pos('+',s));
val(copy(s,1,pos('*',s)-1),b,k);
delete(s,1,pos('*',s));
val(s,c,k);
writeln(a,' ',b,' ',c); //это, так, для проверки
writeln(a+b*c);
readkey
end.
writeln(a*b+c);но это уже как хочешь
Спасибо огромное!!!