Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Обработка символьной информации Язык - Паскаль


Рекомендуемые сообщения

Дан текст, элементы которого числа, разделенные арифметическими знаками «+» и «-». Обработать этот текст с получением значения исходного арифметического выражения.

Текст:

2+7, 6-4, 5+2, 56+57, 34-78, 23-3, 34-6, 19-3, 4-56.

Ссылка на комментарий
Поделиться на другие сайты

Числа строго парами?

А ввод - вывод?

Изменено пользователем Teddy_Bear
Ссылка на комментарий
Поделиться на другие сайты

Ну вот так в виде процедуры

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;

Ввод-вывод сам придумай.

Изменено пользователем Teddy_Bear
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Дан текст, элементы которого числа, разделенные арифметическими знаками «+» и «-». Обработать этот текст с получением значения исходного арифметического выражения.

Текст:

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

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...