Карасик Опубликовано 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти