Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по теории.docx
Скачиваний:
4
Добавлен:
28.09.2019
Размер:
530.05 Кб
Скачать

I:Integer;

Begin

SetLength(d,10); //Выделение памяти дин. массиву

{--------------------}

d[1]:=100; s['A']:=True; //Присваивание значения элементу

a[7]:=Random(100); //Случайное значение

{--------------------}

WriteLn(SizeOf(a)); //Размер статического массива

WriteLn(SizeOf(d[0])*Length(d));//Размера динамического массива

{--------------------}

FillChar(a,SizeOf(a),0); //Заполнение массива нулями

FillChar(d[0],SizeOf(d[0])*Length(d),0);

{--------------------}

WriteLn(Low(d),'-',High(d)); //Получение диапазона индексов

WriteLn(Length(d)); //и длины массива

{--------------------}

For i:=Low(a) To High(a) Do //Заполнение массива

a[i]:=10+Random(90); //случайными двузначными числами

// ЗАМЕЧАНИЕ

// Элемент массива не может служить счётчиком цикла FOR:

// For a[1]:=1 To 10 Do; - ОШИБКА !

ReadLn;

End.

{---------------------}

{ ОПИСАНИЕ МАССИВОВ }

{---------------------}

Var

a:Array[0..9] Of Integer; {Числовой массив}

IMax,iMin:Integer; {Наибольший и наименьший}

c:Array[1..11] Of Char= {Символьный массив}

'ABRACADABRA';

s:Char;

I:Integer;

Begin

//-------------------------------------------------

//ЗАДАЧА 1.

//Заполнить массив случайными двухзначными числами.

//Найти

//а) индексы наибольшего и наименьшего элементов

//б) диапазон значений элементов

//-------------------------------------------------

Randomize;

For i:=Low(a) To High(a) Do //Заполнение числового массива

Begin

a[i]:=10+Random(90); //случайными двузначными числами

Write(a[i],' '); //Вывод элементов в строчку

End;

WriteLn;

IMax:=Low(a); IMin:=Low(a); //Начальные значения индексов

For i:=Low(a)+1 To High(a) Do

Begin

If a[i]<a[IMin] Then IMin:=i; //Обновление наименьшего

If a[i]>a[IMax] Then IMax:=i; //Обновление наибольшего

End;

WriteLn('Min: a[',IMin,'] = ',a[IMin],' Max: a[',IMax,

'] = ',a[IMax]);

//-------------------------------------------------

//ЗАДАЧА 2.

//В заданном символьном массиве найти первую позицию

//указанной буквы

//-------------------------------------------------

For i:=Low(c) To High(c) Do //Вывод символьного массива

Write(c[i]);

WriteLn;

Write('Symbol: '); ReadLn(s);

For i:=Low(c) To High(c) Do //Перебор элементов массива

If c[i]=s Then Break;

If i<=High(c) Then WriteLn('Result: ',i)

Else WriteLn('No Result');

ReadLn;

End.

Билет №11, 12:

Строковый тип данных является сложным. Строки рассматриваются как одномерный символьный массив, со строкой можно выполнить те же действия что и с динамическим массивом, однако строки выделены в особый тип и для них разработана масса операторов, основная задача этих операторов выполнять преобразование и анализ строк.

//Строки

Var

S,T,F:String; //Описание строк

i,c:Integer;

Ch:Char;

Begin

//Образование строк

T:=''; //Пустая строка

S:='asd'; //Присваивание произвольного текста

S:=StringOfChar('@', 20); //Строка с повторяющимся символом

S:=S+T; //Соединение строк (конкатенация)

//Числовые функции строковых аргументов

i:=Length('qwerty'); //Длина i строки 'qwerty'

i:=StrToInt('123'); //Преобразование строки '123' в целое число i

i:=Pos('mid','piramida'); //Поиск подстроки 'mid' в строке 'piramida'

//i - позиция вхождения (иначе i = 0)

//Строковые функции строковых аргументов

S:=AnsiUpperCase('Abc'); //Преобразование малых букв 'Abc' в большие

S:=AnsiLowerCase('Abc'); //Преобразование больших букв 'Abc' в малые

S:=Trim(' qwerty '); //Удаление нач. и кон. пробелов около 'qwerty'

S:=TrimLeft(' qwerty'); //Удаление только нач. пробелов ' qwerty'

S:=TrimRight('qwerty '); //Удаление только кон. пробелов 'qwerty '

S:=Copy('qwerty', 2, 3); //Выделение из 'qwerty' подстроки 'wer'

//Строковые функции числовых аргументов

S:=IntToStr(123); //Преобразование целого числа 123 в строку '123'

S:=FloatToStr(123.34); //Преобразование вещественного числа в строку

//Строковые процедуры

Delete(S,2,3); //Удаление из S со второго символа трёх штук

Insert('qwerty',S,4); //Вставка 'qwerty' в S от четвёртого символа

Val('123',i,c); //Преобразование строки '123' в число i,

//c - позиция неправильного символа (иначе c = 0)

//Пример 1. Замена всех малых латинских букв пробелами

//----------------------------------------------------

S:='123asd123';

For i:=1 To Length(S) Do

If ('a'<=S[i]) And (S[i]<='z') Then S[i]:=' ';

WriteLn('Result ',S);

//Пример 2. Переворот строки

//----------------------------------------------------

Write('String : '); ReadLn(S);

T:='';

For i:=1 To Length(S) Do

T:=S[i] + T;

WriteLn('Result ',T);

//Пример 3. Замена указанного символа на заданный текст

//----------------------------------------------------

Write('String: '); ReadLn(S);

Write('Symbol: '); ReadLn(Ch);

Write('Text : '); ReadLn(F);

T:='';

For i:=1 To Length(S) Do

If S[i]=Ch Then T:=T+F Else T:=T+S[i];

WriteLn('Result ',T);

//Пример 4. Разбиение строки на слова

//----------------------------------------------------

Write('String: '); ReadLn(S);

c:=0;

For i:=1 To Length(S) Do

If S[i]=' ' Then

Begin

If i>c+1 Then

WriteLn(Copy(S,c+1,i-c-1));

c:=i;

End;

If i>c+1 Then WriteLn(Copy(S,c+1,i-c-1));

//Пример 5. Сортировка массива строк

//----------------------------------------------------

SetLength(M,5);

M[0]:='Cat'; M[1]:='Dog';

M[2]:='Horse'; M[3]:='Bird';

M[4]:='Mouse';

WriteLn('Strings: ');

For i:=0 To High(M) Do Write(M[i],' ');

WriteLn;

For i:=Low(M)+1 To High(M) Do

Begin

S:=M[i]; c:=i;

While (c>0) And (M[c-1]>S) Do

Begin

M[c]:=M[c-1];

c:=c-1;

End;

M[c]:=S;

End;

WriteLn('Result: ');

For i:=0 To High(M) Do Write(M[i],' ');

WriteLn;//----------------------------------------------------

ReadLn;

End.