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

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


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

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

Текст:

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
Ссылка на комментарий
Поделиться на другие сайты

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

Текст:

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

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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