Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Билет 23
Структурный тип строка. Строка как специальная форма массива. Основы обработки строк
Строка, как специальная форма массива.
В Турбо Паскале имеется семейство строковых типов, рассматриваемых как специальная форма массива, а именно одномерный массив символов. Это семейство соответствует по умолчанию следующему описанию:
type string[ <m >] = array [0..m] of char;
Строки длины до 255 соответствуют типу string . Нулевая позиция строки является специальной позицией, в которой хранится текущая длина строки .Эта позиция автоматически корректируется при операциях над строками. Доступ к компоненту строки (символу строки) осуществляется также как к элементу массива, т.е. по индексу (индексному выражению). Разрешен доступ, в том числе и к нулевой позиции строки.
Основы обработки строк.
Строки относятся к важным средствам представления нечисловой информации, и обработка строк имеет широкие приложения во многих областях использования нечисловой информации (редактирование текстов, логический анализ, автоматизация перевода, распознавание текстов и др.).
Поскольку строки указанного типа являются разновидностями массива, для них можно применять всё, что применимо к массивам. Кроме того, для обработки строк в Турбо Паскале предусмотрен ряд достаточно удобных и эффективных средств:
Для строк допустим оператор присваивания вида:
< переменная типа string > := < выражение типа string или типа char >;
Над строками допустимы отношения сравнения <,<=,>,>=, =, <>
К строкам применима операция сцепления строк (конкатенация), обозначаемая символом '+'.
Стандартные процедуры обработки строк:
Delete(st, Npos, count) -удаление из строки st, начиная с позиции Npos подстроки длины count.
Insert(subst, st, Npos) - вставка в строку st подстроки subst с позиции Npos.
Стандартные функции обработки строк:
Length(st) - длина строки st (без учёта нулевой позиции строки).
Copy(st, Npos, count) -выделение из строки st подстроки длиной count, начиная с позиции Npos.
Pos(subst, st) -позиция начала первого вхождения подстроки subst в строку st. Основными элементарными задачами обработки строк являются: управление пробелами в строке (удаление лишних пробелов, удаление пробелов в начале или в конце строки, выравнивание длин строк вставкой пробелов и др.), анализ частот символов, либо подстрок, поиск подстрок по заданным критериям (первого вхождения, всех вхождений, по образцу, по шаблону и др.), подстановка подстрок и другие.
program Z433_23;
uses Z433_23;
Var x,y:mass; t:boolean; z:mass1;
i:integer;
Begin{osnovnaya programma}
writeln('x[i]=');
for i:=1 to n do
readln(x[i]);
writeln('y[i]=');
for i:=1 to n do
readln(y[i]);
ysl(x,y,t);
if t then Begin
form_massiv(x,y,z);
for i:=1 to n do
writeln (z[i]);
end
else writeln('yslovie ne vupolneno');
end.
unit Z433_23;
interface;
Const n=2;
Type mass=array[1..n] of integer;
mass1=array[1..n] of real;
function fact(n:integer):integer;
procedure ysl(x,y:mass; Var t:boolean);
procedure form_massiv(x,y:mass; Var z:mass1);
implementation
function fact(n:integer):integer;
Var y,i:integer;
Begin y:=1;
for i:=1 to n do
y:=y*i;
fact:=y;
end;
procedure ysl(x,y:mass; Var t:boolean);
Var i:integer;
Begin
for i:=1 to n do
if (y[i]>x[i]) then t:=true
else t:=false;
end;
procedure form_massiv(x,y:mass; Var z:mass1);
Var i:integer;
Begin
for i:=1 to n do
z[i]:=fact(y[i])/(fact(x[i])*(fact(y[i])-fact(x[i])));
end;
end.