1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Добрый день!!! Помогите пожалуйста решить такую задачу: Допустим дана такая строка (13121123123-123123123). Как извлечь из нее число до первого знака опереции (*,-,/,+) b и поместить его в другую строку. Конечно если знать что посли числа идет знак - то можно ипользовать эту реализацию.
function QWERTY(s : string):string; var i,p : byte; sum : string; begin sum :=''; p := pos('-',s); for i :=1 to p-1 do sum := sum + s[i]; QWERTY := sum; end; begin Writeln(Qwerty('100528749-300')); end.
. А если я не знаю, какой знак операции идет после числа. Как поступать в такой ситуации?????!!
Вроде исправил...Но один баг остался...Выражения вида (235674234-2565677) считаются на ура. А стоит ввести (235674234-2565677)-234. Результат почемуто неправильный. Помогите ПОЖАЛУЙСТА!!!!!!!!!
const max=1000; type STACK = record top:integer; elem:array [1..max] of char; end;
STACK2 = record top:integer; elem:array [1..max] of real; end;
var s,s2:stack; symv:char; {---------------------------------------} procedure MakeNull (var S:STACK); begin S.top:=max + 1; end; {---------------------------------------} procedure MakeNullR (var S:STACK2); begin S.top:=max + 1; end;
{---------------------------------------} function Empty (S:Stack):boolean; begin if S.top > max then Empty:=true else Empty:=false; end; {----------------------------------------} function Top(s : stack) : char; begin if Empty(s) then exit else Top := s.elem[s.top]; end; {---------------------------------------} procedure OutStack (var s:stack; var symv:char); begin if Empty (s) then exit else begin symv:= s.elem[s.top]; s.top:=S.top + 1; end; end; {--------------------------------------} procedure OutStackR (var s:stack2; var x:real); begin if Empty (s2) then exit else begin x:= s.elem[s.top]; s.top:=S.top + 1; end; end; {---------------------------------------} procedure Instack (var S:Stack;x:char); begin if S.top = 1 then exit else begin s.top:=s.top-1; s.elem[s.top]:=x; end ; end;
{---------------------------------------} procedure InstackR (var S:Stack2;x:real); begin if S.top = 1 then exit else begin s.top:=s.top-1; s.elem[s.top]:=x; end ; end; {----------------------------------------} function Prior(f : char) : Byte; begin case f of '+','-' : prior := 2; '*','/' : prior := 3; '(' , ')' : prior := 1; else prior := 0; end; end;
{----------------------------------------} procedure Dell(var s : stack); begin if Empty(s) then exit else s.top := s.top + 1; end; {----------------------------------------} procedure opz (var out:string); var i: integer; inp:string; t: boolean; out2:string; begin Makenull(s); write ('INP = '); readln (inp); for i:=1 to length (inp) do case inp[i] of '0'..'9': begin if (inp[i]>='0') and (inp[i]<='9') then out:=out+inp[i]; end;
'+','-','*','/': begin out:=out+' '; while Prior(Top(s))>= Prior(inp[i]) do begin outstack(s,symv); out:=out+symv+' '; end; instack (s,inp[i]); end;
'(' : InStack(s,inp[i]);
')' : begin while Prior(Top(s)) <> 1 do begin OutStack(s,symv); out:=out+' '+symv; end; Dell(s); end; end; for i:=max downto s.top do out:=out+' '+s.elem[i];
writeln ('OPZ = ',out);
end; {-----------------------------------------------------} procedure Result (out:string ;var res:real); var error:integer; num,x,y:real; s3:stack2; estr,out2:string; i:integer;
begin MakeNullR(s3); for i := 1 to Length(out) do case out[i] of '0'..'9' : begin if (out[i]>='0') and (out[i]<='9') then begin out2:=out2+out[i]; end; end;
' ': begin val(out2,num,error); InstackR(s3,num); out2:=''; end; '+': begin OutStackR(s3,y); OutStackR(s3,x); res:=x+y; InStackR(s3,res); end; '-': begin OutStackR(s3,y); OutStackR(s3,x); res:=x-y; InStackR(s3,res); end; '*': begin OutStackR(s3,y); OutStackR(s3,x); res:=x*y; InStackR(s3,res); end; '/': begin OutStackR(s3,y); OutStackR(s3,x); res:=x/y; InStackR(s3,res); end;