Вопрос № 180303: Дорогие Эксперты! будьте добры помоч с реализацией ряда процедур.... вот список и заголовки их
Код:
Вопрос № 180303:
Дорогие Эксперты! будьте добры помоч с реализацией ряда процедур....
вот список и заголовки их
Код:
const StrOk=0; MemEr=1; LenEr=2; (это ошибки которые функции возвращают:0-все ок, 1-ошибка памяти, 2-ошибка
длинны ) type sting1=array[1..255] of char; (концом строки считать символ с кодом 0)
Procedure InputStr(var st:string1) {Ввод строки st с клавиатуры.}
Procedure OutputStr(const st:string1) {Вывод строки st на экран монитора.}
Procedure InitStr(var st:string1; n: word) {Выделение динамической памяти под строку st, содержажую от 0 до n символов.}
Procedure WriteToStr(var st:string1; s:string) { Запись данных в строку
st из строки s.}
Procedure WriteFromStr(var s:string; st:string1) {Запись данных в строку s из строки st.}
Function Comp(s1,s2:string1; var fl:shortint):boolean {Сравнивает строки s1 и s2. Возвращает true если s1=s2 и fl=0, если s1>s2 и fl=1, если s1<s2 и fl=-1.}
Procedure Delete(var S:String1; Index,Count:Word) {Удаляет Count символов из строки S,начиная с позиции Index.}
Procedure Insert(Subs:String1;var S:String1; Index:Word) {Вставляет подстроку SubS
в строку S,начиная с позиции Index.}
Procedure Concat( const S1, S2:string1; var srez:string1) {Выполняет конкатенацию строк S1 и S2; результат помещает в srez.}
Procedure Copy(S:String1;Index,Count:Word; var Subs:String1) { Возвращает подстроку Subs из строки S,начиная с позиции Index и длиной Count символов.}
Function Length(S: String1): Word {Возвращает текущую длину строки S.}
Function Pos(SubS, S: String1): Word {Возвращ
ает позицию, начиная с которой в строке S располагается подстрока SubS}
function LastPost(s,s1:string):word. {Назначение: поиск последнего вхождения подстроки s1 в строку s. Входные параметры: s,s1. Выходные параметры: нет.}
Отвечает lamed (Профессор) :
Здравствуйте, Евгений Сергеевич! Код в приложении. PascalABC. Поскольку из вопроса неизвестно, как возвращать ошибки, в программе они не использованы.
Код:
program p180303; uses Crt;
const StrOk=0;
MemEr=1; LenEr=2; { это ошибки которые функции возвращают:0-все ок, 1-ошибка памяти, 2-ошибка длинны }
type string1=array[1..255] of char; {концом строки считать символ с кодом 0}
Procedure InputStr(var st:string1); { Ввод строки st с клавиатуры. } var c: char; i: word; begin c:= chr(0); i:= 1;
c:= readkey; while (c<>chr(13)) do begin write(c); st[i] := c;
inc(i,1); c:= readkey; end; st[i] := chr(0); end;
Procedure OutputStr(const st:string1); { Вывод строки st на экран монитора. } var i: word; begin i:= 1; while (st[i]<>chr(0)) do begin write(st[i]); inc(i,1); end; writeln; end;
Procedure InitStr(var st:string1; n: word); { Модель выделения динамической памяти под строку st, содержажую от 0 до n символов. } var i: word; begin
i:=1; while (i<=n) do inc(i,1); st[i]:=chr(0); end;
Procedure WriteToStr(var st:string1; s:string); { Запись данных в строку st из строки s. } var i, j: word; len: word; begin len := ord(s[0]); j:= 1; i:= 1; while i<= len do begin st[j] := s[i]; inc(j,1); inc(i,1); end; st[j] := chr(0); end;
Procedure WriteFromStr(var s:string; st:string1); { З
апись данных в строку s из строки st. } var i: word; begin s:= ''; i:= 1; while (st[i]<>chr(0)) do begin s:= s+st[i]; inc(i,1); end; end;
Function Comp(s1,s2:string1; var fl:shortint):boolean; { Сравнивает строки s1 и s2. Возвращает true если s1=s2 и fl=0, если s1>s2 и fl=1, если s1<s2 и fl=-1. } var i: word; begin Comp := false; i:= 1; while (s1[i]=s2[i]) do begin if (s1[i]=chr(0))
then begin Comp := true; fl := 0; exit; end; inc(i,1); end; if (s1[i]>s2[i]) then fl := 1 else fl := -1; end;
Procedure Delete(var S:String1; Index,Count:Word); { Удаляет Count символов из строки S,начиная с позиции Index. } var i, j: word; begin i:= 1; while (s[i] <> chr(0)) and (i<Index) do inc(i,1);
j:=1; while (s[i] <> chr(0)) and (j<=count) do begin inc(i,1); inc(j,1); end;
j:= i-count; while (s[i] <> chr(0)) do begin s[j]:=s[i]; inc(j,1); inc(i,1); end; s[j]:=chr(0);
end;
Procedure Insert(Subs:String1;var S:String1; Index:Word); { Вставляет подстроку SubS в строку S,начиная с позиции Index. } var i, j: word; len1, len2: word; begin len1:= 1; while
(s[len1]<>chr(0)) do inc(len1,1); dec(len1,1);
if (index<1) or (index>len1) then exit;
len2:=1; while (subs[len2]<>chr(0)) do inc(len2,1); dec(len2,1);
s[len1+len2+1]:=chr(0); i:= index;
while (i<=len1) do begin s[i+len2]:= s[i]; inc(i,1); end;
j:=1; i:= index; while (i<index+len2) do begin s[i]:= subs[j]
; inc(j,1); inc(i,1); end; end;
Procedure Concat( const S1, S2:string1; var srez:string1); { Выполня
ет конкатенацию строк S1 и S2; результат помещает в srez. } var i,j: word; begin i:= 1; while (s1[i]<>chr(0)) do begin srez[i]:=s1[i]; inc(i,1); end; j:= 1;
while (s2[j]<>chr(0)) do begin srez[i]:=s2[j]; inc(i,1); inc(j,1); end; srez[i] := chr(0); end;
Procedure Copy(S:String1;Index,Count:Word; var Subs:String1); { Возвращает подстроку Subs из строки S,начиная с позиции Index
и длиной Count символов. } var i, j: word; begin i:= 1; while (i<Index) and (s[i]<>chr(0)) do inc(i,1);
j:= 1; while (i<Index+Count) and (s[i]<>chr(0)) do begin Subs[j] := s[i]; inc(i,1); inc(j,1); end; Subs[j] := chr(0); end;
Function Length(S: String1): Word; { Возвращает текущую длину строки S. } var i: Word; begin i:= 1; whi
le (s[i] <> chr(0)) do inc(i,1); Length := i-1; end;
Function Pos(SubS, S: String1): Word; { Возвращает позицию, начиная с которой в строке S располагается подстрока SubS } var i,j: word; begin i:= 1; j:= 1; while (s[i] <> chr(0)) do begin if (s[i]=subs[j]) then inc(j,1) else if (subs[j]=chr(0)) then begin Pos:=(i-j+1); exit; end else j:= 1;
inc(i,1); end; if (subs[j]=chr(0)) then pos := i-j+1 else pos := 0; end;
Function LastPost(s,s1:string1):word; { Назначение: поиск последнего вхождения подстроки s1 в строку s. Входные параметры: s,s1. Выходные параметры: нет. } var i,j: word; begin i:= 1; j:= 1; LastPost:=0; while (s[i] <> chr(0)) do begin if (s[i]=s1[j]) then inc(j,1) else if
(s1[j]=chr(0)) then begin LastPost:=(i-j+1); j:=1; end else j:= 1; inc(i,1); end; if (s1[j]=chr(0)) then LastPost := i-j+1 end;
var s1, s2, s4: string1; s3: string; fl: ShortInt; begin // ClrScr; // writeln('start');
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.