Карасик Опубликовано 2 апреля, 2012 Жалоба Поделиться Опубликовано 2 апреля, 2012 Дан текст, элементы которого числа, разделенные арифметическими знаками «+» и «-». Обработать этот текст с получением значения исходного арифметического выражения. Текст: 2+7, 6-4, 5+2, 56+57, 34-78, 23-3, 34-6, 19-3, 4-56. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 2 апреля, 2012 Жалоба Поделиться Опубликовано 2 апреля, 2012 (изменено) Числа строго парами? А ввод - вывод? Изменено 2 апреля, 2012 пользователем Teddy_Bear Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 2 апреля, 2012 Жалоба Поделиться Опубликовано 2 апреля, 2012 (изменено) Ну вот так в виде процедуры procedure SimpleCalc;varS_in,S_out,OpNow,Sa:String;j,k,kmax,N,N1:Integer;Sop:Array[1..2] of String;beginS_in:='2+7, 6-4, 5+2, 56+57, 34-78, 23-3, 34-6, 19-3, 4-56.';kmax:=Length(S_in);Sop[1]:='';Sop[2]:='';j:=1;OpNow:='';for k:=1 to kmax do begin Sa:=Copy(S_in,k,1); try N:=StrToInt(Sa); except N:=-1; end; if N>0 then begin Sop[j]:=Sop[j]+Sa; end; if ((Sa='+') or (Sa='-')) then begin OpNow:=Sa; j:=2; end; if (Sa<>'+') and (Sa<>'-') and (N=-1) and (j=2) then begin if OpNow='+' then begin N1:=StrToInt(Sop[1])+StrToInt(Sop[2]); end else begin N1:=StrToInt(Sop[1])-StrToInt(Sop[2]); end; j:=1; Sop[1]:=''; Sop[2]:=''; if S_out='' then begin S_out:=IntToStr(N1); end else begin S_out:=S_out+', '+IntToStr(N1); end; end;end;end; Ввод-вывод сам придумай. Изменено 2 апреля, 2012 пользователем Teddy_Bear 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ego Drama Опубликовано 2 апреля, 2012 Жалоба Поделиться Опубликовано 2 апреля, 2012 Дан текст, элементы которого числа, разделенные арифметическими знаками «+» и «-». Обработать этот текст с получением значения исходного арифметического выражения. Текст: 2+7, 6-4, 5+2, 56+57, 34-78, 23-3, 34-6, 19-3, 4-56. FreePascal. program SimpleCalc;uses SysUtils, StrUtils;constSource = '1+1, 2+2, 3-1, 100+999';WordDelim = [ ',' ];ExprDelim = [ '+', '-' ];varExpr, Op: string;L_Operand, R_Operand, Result, i: integer;begini := 1;while True dobegin Expr := (i, Source, WordDelim); if Expr = '' then break; L_Operand := StrToInt(Trim(ExtractWord(1, Expr, ExprDelim))); R_Operand := StrToInt(Trim(ExtractWord(2, Expr, ExprDelim))); Op := Expr[LastDelimiter('+-', Expr)]; case Op of '+': Result := L_Operand + R_Operand; '-': Result := L_Operand - R_Operand; end; WriteLn(Trim(Expr) + ' = ' + IntToStr(Result)); inc(i);end;end. ExtractWord LastDelimiter 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.