Исходный код:
- function Product(s: string): LongInt;
- var
- i,e: word;
- v: LongInt;
- begin
- if s='' then Product:= 1 // если строки нет, то Продукт = 1;
- else begin
- i:= Length(s); // Запоминаем длину строки
- while (i>0) and not (s[i] in ['*','/']) do dec(i);
- // Пока длина больше 0 и нет s[i] в (*,/) (строка не содержит в себе * и /)
- // делаем декриз i
- Val(Copy(s,i+1,Length(s)-i),v,e);
- // преобрзуем число в строку
- {
- Val(S, x, kod) преобразует строку символов S в число x.
- Здесь S – строковое выражение, x – числовая переменная
- (именно туда будет помещен результат),
- kod – целочисленная переменная (типа integer),
- которая равна номеру позиции в строке S,
- начиная с которой произошла ошибка преобразования,
- если преобразование прошло без ошибок, то переменная kod равна 0.
- }
- // Берем из строки s начиная с позиции i+1, количестко s-i,
- // результат преобразования заносим в переменную v, e - это когда ошибка возникает
- if s[i]='*' then Product:= Product(Copy(s,1,i-1))*v
- // в строке - * тогда Продукт= Продукт (Из строки s, начиная с 1 позиции, i-1 символов)
- // умножаем на v
- else Product:= Product(Copy(s,1,i-1)) div v
- // иначе Продукт = Продукт(Из строки s, с 1ой позиции и до i-1) делем на v
- end
- end;
- function Sum(s: string): LongInt;
- var
- i,e: word;
- begin
- if s='' then Sum:= 0 // если ничего нет в строке, то сумма равна 0
- else begin
- i:= Length(s); // i:= длина строки s
- while (i>0) and not (s[i] in ['+','-']) do dec(i);
- // Пока длина строки больше 0 и нет s[i] в [+,-] делаем вычитание единицы из i
- Sum:= Sum(Copy(s,1,i-1))+Product('*'+Copy(s,i,Length(s)-i+1))
- // Sum:= Sum(Выделяем из строки s , начиная с 1 позиции, i-1 символов) +
- // + Product ('*'+Copy(s,i,Length(s)-i+1))
- end
- end;
- var
- s,t: string;
- i,j: word;
- begin
- readln(s);
- while Pos(' ',s)>0 do Delete(s,Pos(' ',s),1);
- {
- Pos(Substr : String; S : String)
- Ищет подстроку в строке.
- Параметры Substr и S - строковые выражения.
- Pos ищет первое вхождение строки Substr в строку S
- и возвращает целочисленное значение,
- которое является индексом первого символа Substr внутри S.
- Если строка Substr не найдена, то Pos возвращает нуль.
- Delete(S:String; Index:Integer; Count:Integer);
- Delete(S, Index, Count) -
- Удаляет из строки S подстроку длинной Count начиная с позиции Index.
- Параметр S - переменная со строковым типом.
- Index и Count - целочисленные выражения.
- Если значение Index больше, чем длина S,
- то никакие символы не удаляются.
- Если Count определяет большее количество символов,
- чем остается в строке с позиции Index до конца строки,
- то удаляется остаток строки.
- }
- while Pos(')',s)>0 do begin // если есть закрывающая скобка
- i:= Pos(')',s); // i:= позицию (целочисленное значение) закрывающей скобки
- j:= i-1; // j:= (целочисленное значение) позицию перед этой скобкой
- while s[j]<>'(' do dec(j); // пока не нашлась в строке открывающая скобка
- // то делаем вычитание единицы из j
- Str(Sum(Copy(s,j+1,i-j-1)),t);
- // Str (процедура) Преобразовывает число в строку.
- // STR (X, ST), где «X» - это число, а ST – его строковое представление.
- {
- Функцие Sum передаем два значения:
- 1. Copy (S, poz, n) выделяет из строки S, начиная с позиции poz,
- подстроку из n символов. Здесь S – любое строковое выражение,
- poz, n – целочисленные выражения.
- С позиции j+1, количество i-j-1 символов.
- 2. t - еще нигде не появлялось.
- }
- Delete(s,j,i-j+1);
- // Удаляем из строки s, начиная с j и до i-j+1
- Insert(t,s,j)
- {
- Insert(t,s,j) вставляет в строку S,
- начиная с позиции j, подстроку t.
- Здесь t – любое строковое выражение,
- S – строковая переменная (именно ей будет присвоен результат выполнения процедуры),
- j – целочисленное выражение.
- }
- end;
- writeln(Sum(s));
- end.
- Процедуры и функции для работы с символами и строками
- function Chr(a: byte): char;
- Преобразует код в символ в кодировке Windows
- function ChrUnicode(a: word): char;
- Преобразует код в символ в кодировке Unicode
- function OrdUnicode(a: char): word;
- Преобразует символ в код в кодировке Unicode
- function UpperCase(ch: char): char;
- Преобразует символ в верхний регистр
- function LowerCase(ch: char): char;
- Преобразует символ в нижний регистр
- function UpCase(ch: char): char;
- Преобразует символ в верхний регистр
- function LowCase(ch: char): char;
- Преобразует символ в нижний регистр
- function Pos(subs,s: string): integer;
- Возвращает позицию подстроки subs в строке s. Если не найдена, возвращает 0
- function PosEx(subs,s: string; from: integer := 1): integer;
- Возвращает позицию подстроки subs в строке s начиная с позиции from. Если не найдена, возвращает 0
- function Length(s: string): integer;
- Возвращает длину строки
- procedure SetLength(var s: string; n: integer);
- Устанавливает длину строки s равной n
- procedure Insert(source: string; var s: string; index: integer);
- Вставляет подстроку source в строку s с позиции index
- procedure Delete(var s: string; index,count: integer);
- Удаляет из строки s count символов с позиции index
- function Copy(s: string; index,count: integer): string;
- Возвращает подстроку строки s длины count с позиции index
- function Concat(s1,s2,...: string): string;
- Возвращает строку, являющуюся результатом слияния строк s1,s2,...
- function Concat(s1,s2: string): string;
- Возвращает строку, являющуюся результатом слияния строк s1 и s2
- function LowerCase(s: string): string;
- Возвращает строку в нижнем регистре
- function UpperCase(s: string): string;
- Возвращает строку в верхнем регистре
- function StringOfChar(ch: char; count: integer): string;
- Возвращает строку, состоящую из count символов ch
- function ReverseString(s: string): string;
- Возвращает инвертированную строку
- function CompareStr(s1,s2: string): integer;
- Сравнивает строки. Возвращает значение < 0 если s1 0 если s1>s2 и = 0 если s1=s2
- function LeftStr(s: string; count: integer): string;
- Возвращает первые count символов строки s
- function RightStr(s: string; count: integer): string;
- Возвращает последние count символов строки s
- function Trim(s: string): string;
- Возвращает строку с удаленными начальными и конечными пробелами
- function TrimLeft(s: string): string;
- Возвращает строку с удаленными начальными пробелами
- function TrimRight(s: string): string;
- Возвращает строку с удаленными конечными пробелами
- function Format(fmtstr: string; params pars: array of object): string;
- Возвращает отформатированную строку, построенную по форматной строке fmtstr и списку форматиуемых параметров pars
- function StrToInt(s: string): integer;
- Преобразует строковое представление целого числа к числовому значению
- function StrToInt64(s: string): int64;
- Преобразует строковое представление целого числа к числовому значению
- function StrToFloat(s: string): real;
- Преобразует строковое представление вещественного числа к числовому значению
- function TryStrToInt(s: string; var value: integer): boolean;
- Преобразует строковое представление s целого числа к числовому значению и записывает его в value. При невозможности преобразования возвращается False
- function TryStrToInt64(s: string; var value: int64): boolean;
- Преобразует строковое представление s целого числа к числовому значению и записывает его в value. При невозможности преобразования возвращается False
- function TryStrToFloat(s: string; var value: real): boolean;
- Преобразует строковое представление s вещественного числа к числовому значению и записывает его в value. При невозможности преобразования возвращается False
- function TryStrToFloat(s: string; var value: single): boolean;
- Преобразует строковое представление s вещественного числа к числовому значению и записывает его в value. При невозможности преобразования возвращается False
- procedure Val(s: string; var value: integer; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: shortint; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: smallint; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: int64; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: byte; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: word; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: longword; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: uint64; var err: integer);
- Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: real; var err: integer);
- Преобразует строковое представление s вещественного числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Val(s: string; var value: single; var err: integer);
- Преобразует строковое представление s вещественного числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
- procedure Str(i: integer; var s: string);
- Преобразует целое значение i к строковому представлению и записывает результат в s
- procedure Str(r: real; var s: string);
- Преобразует вещественное значение r к строковому представлению и записывает результат в s
- function IntToStr(a: integer): string;
- Преобразует целое число к строковому представлению
- function IntToStr(a: int64): string;
- Преобразует целое число к строковому представлению
- function FloatToStr(a: real): string;
- Преобразует вещественное число к строковому представлению
No comments:
Post a Comment