АСТРАХАНСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕКИЙ УНИВЕРСИТЕТ
КАФЕДРА АИУ
ОТЧЕТЫПО РАБОТАМ НА ТЕМУ:
«СТРОКИ И МАССИВЫ»
Выполнил: студент группы
ДИААБ_21/2 Сагиндыков Расул
Проверил: доц. Кокуев А.Г.
АСТРАХАНЬ
Первая задача по теме: «Строки»
Дана последовательность. Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству:буквы слова упорядочены по алфавиту
Ввод:
t:TStringList;
i,j,k:integer;
|
t:=TStringList.Create;
t.DelimitedText:=Memo1.Text;//пусть слова отделены пробелами
k:=0;
|
I AAAAIQC2gziS/gAAAOEBAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsB Ai0AFAAGAAgAAAAhADj9If/WAAAAlAEAAAsAAAAAAAAAAAAAAAAALwEAAF9yZWxzLy5yZWxzUEsB Ai0AFAAGAAgAAAAhACHVke7lAQAA5gMAAA4AAAAAAAAAAAAAAAAALgIAAGRycy9lMm9Eb2MueG1s UEsBAi0AFAAGAAgAAAAhAL8CVrbhAAAACwEAAA8AAAAAAAAAAAAAAAAAPwQAAGRycy9kb3ducmV2 LnhtbFBLBQYAAAAABAAEAPMAAABNBQAAAAA= " strokecolor="#4579b8 [3044]"/>
UTF8copy(t[i],j,1)>UTF8Copy(t[i],j-1,1)
|
begin
k:=1;
Memo2.Lines.Add(t[i]);
|
Showmessage('Нет слов не равных последнему символы которых расположены по алфавиту')
|
Вторая задача по теме: «Строки»
Символьная строка заканчивается восклицательным знаком (!). Слова в ней отделены друг от друга точкой с запятой (;). Найдите те слова, которые начинаются и заканчиваются одной и той же буквой.
Ввод:
s, s1: string;
n, i, k, f: byte;
|
begin
Memo1.Clear;
s:= InputBox('Введите последовательность слов, разделенных пробелами', 'Введите последовательность слов, разделенных пробелами', '');
s:= ' ' + s;{добавим пробел в начало для удобства}
Memo1.Lines.Add('Слова с одинаковой первой и последней буквами:');
i:= 1;
f:= 0;
|
if (s[i] <> ' ') and ((s[i - 1] = ' ') or (i = 1))
|
while (s[k] <> ' ') and (k <= length(s))
|
begin
s1:= s1 + s[k];
k:= k + 1;{идемвперед}
end;
|
if s1[1] = s1[length(s1)]
|
i:= i + length(s1);{перепрыгиваем}
end
|
else
i:= i + 1;{если не слово, идем вперед}
|
Memo1.Lines.Add('Слов с одинаковой первой и последней буквами нет!');
end;
|
begin
f:= 1;
Memo1.Lines.Add(s1);
end;
|
Третья задача по теме: «Строки»
Заданный текст распечатать по строкам, понимая под строкой либо очередные 60 литер, если среди них нет запятой, либо часть текста до запятой включительно.
Ввод: s:String;
j:integer;
|
begin
s:=Memo1.Text;
Memo2.Clear;
|
I AAAAIQC2gziS/gAAAOEBAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsB Ai0AFAAGAAgAAAAhADj9If/WAAAAlAEAAAsAAAAAAAAAAAAAAAAALwEAAF9yZWxzLy5yZWxzUEsB Ai0AFAAGAAgAAAAhAE0pD+fmAQAA6QMAAA4AAAAAAAAAAAAAAAAALgIAAGRycy9lMm9Eb2MueG1s UEsBAi0AFAAGAAgAAAAhACmaFmzgAAAACQEAAA8AAAAAAAAAAAAAAAAAQAQAAGRycy9kb3ducmV2 LnhtbFBLBQYAAAAABAAEAPMAAABNBQAAAAA= " strokecolor="#4579b8 [3044]"/>
then j:=60;
Memo2.Lines.Add(UTF8Copy(s,1,j));
UTF8Delete(s,1,j);
end;
|
Задача на одномерной массив
Дан одномерный массив B, состоящий из 2n элементов. Переставить его элементы по следующему правилу: b[1], b[n+1], b[2], b[n+2],..., b[n], b[2n]. Помогите составить код.
Ввод: b:array ofinteger;//динамический массив
n,i,j,x:integer;
|
begin
n:=strtoint(Edit1.Text);//вводим размер половины массива
setlength(b,2*n); //выделяем память под весь массив
Memo1.Clear;
|
begin
b[i]:=i+1;//длянаглядности
Memo1.Text:=Memo1.Text+inttostr(b[i]) + ' ';
end;
|
begin
x:=b[n+i];
for j:=n+i downto 2*i+1 do
b[j]:=b[j-1];
b[2*i+1]:=x;
end;
|
Memo2.Text:=Memo2.Text+inttostr(b[i]) + ' ';
end;
|