лабораторные на Pasca (Кудрявцев)l
.pdfМассивы |
93 |
|
|
for j:=1 to m do begin
write('введите ', j, '–и столбец'); for i := 1 to n do
begin
write('b[', i, ', ', j, ']= '); readln(b[i, j]);
end;
end;
{вывод одномерного массива}
writeln('вывод массива'); for i := 1 to n do
write('a[', i:2, ']=', a[i]:4);
{вывод двумерного массива}
for i := 1 to n do begin
for j:=1 to m do
write('b['. i, ', ', 3, ']=', b[i, j]); writeln;
end;
{суммирование элементов одномерного массива}
s := 0;
for i := 1 to n do s := s + a[i];
{суммирование элементов двумерного массива}
s := 0;
for i := 1 to n do
94 |
Лабораторная работа № 8 |
|
|
for j := 1 to m s:=s+b[i,j];
{суммирование диагональных элементов двумерного массива}
s := 0;
for i := 1 to n do s:= s + b[i, i];
{суммирование двух массивов}
for i := 1 to n do
c[i] := a[i] + b[i];
{суммирование двумерных массивов}
for i := 1 to n do
for j := 1 to m do
c[i, j] := a[i, j] + b[i,j];
{суммирование элементов i–ой строки матрицы}
s := 0;
for j := 1 to m do s := s + b[i, j];
{суммирование матрицы по строкам}
for i := 1 to n do begin
s := 0;
for j := 1 to m do s := s + b[i, j]; d[i] := s;
end;
Массивы |
95 |
|
|
{транспонирование матрицы} {заменить строки столбцами, а столбцы строками}
for i := 1 to n do
for j := 1 to m do b[i, j] := a[j, i];
{транспонирование квадратной матрицы}
for i := 1 to n–1 do
for j := i + 1 to n do begin
p := a[i, j]; a[i, j] := a[j, i]; a[j, i] := p;
end;
{умножение матрицы на вектор}
for i := 1 to n do begin
s := 0;
for j := 1 to m do
s := s + a[i, j] b[j]; c[i] := s;
end;
{умножение матрицы на матрицу}
for i:=1 to n do for j:=1 to m do
begin s:= 0;
for l:=1 to k do
96 |
Лабораторная работа № 8 |
|
|
s:= s + a[i,l]*b[l,j]; c[i,j]:= s;
end;
{удаление элемента из массива}
n := n–1 ;
for i := k to n do a[i] := a[i+1];
{включение элемента в заданную позицию массива}
for i := n downto k do a[i + 1] := a[i]; a[k] := b;
n := n+1 ;
{включение элемента в массив, упорядоченный} {по возрастанию с сохранением упорядоченности}
i := 1;
m1: if i > n then begin a[i+1] := b; goto m2 end; if b > a[i] then begin i := i+1; goto m1 end; for j := n downto i do
a[j+1] := a[j]; a[i] := b;
m2: n := n+1 ;
{удаление строки с заданным номером из матрицы}
n := n – 1 ;
for i := k to n do
for j := 1 to m do
b[i, j] := b[i+1, j];
Массивы |
97 |
|
|
{включение строки в матрицу}
for i := n downto k do for j := 1 to m do b[i+1, j] := b[i, j]; for j := 1 to m do
a[k,j] := c[j]; n := n+1 ;
{перестановка строк матрицы}
for k := 1 to m do c[k] := a[i,k];
for k := 1 to m do a[i,k] := a[j,k]; for k := 1 to m do
a[j,k] := c[k];
{перестановка строк матрицы}
for k := 1 to m do begin
p := a[i,k]; a[i,k] := a[j,k]; a[j,k] := p;
end;
{умножение строки матрицы на число b}
for j := 1 to n do a[i, j] := a[i, j] b;
{поиск минимального (максимального) элемента в массиве}
max := а[1]; index := 1; for i := 2 to n do
98 |
Лабораторная работа № 8 |
|
|
if a[i] > max then begin
max := a[ i ]; index := i;
end;
{поиск минимального (максимального) элемента в матрице}
max := а[1, 1]; indexi := 1; indexj := 1; for i := 2 to n do
for j := 1 to m do
if a[i, j] > max then begin
max := a[i, j]; indexi := i; indexj := j;
end;
{упорядочить массив по возрастанию (убыванию)}
for j := 1 to n–1 do for i := 1 to n–j do
if a[i] > a[i+1 ] then begin
s := a[i];
a[i] := a[i+1]; a[i+1] := s;
end;
{преобразование матрицы в одномерный массив}
for i := 1 to n do
for j := 1 to m do b[(i–1) m+j] := a[i, j];
Массивы |
99 |
|
|
{определение числа элементов массива, удовлетворяющихзаданному условию}
k := 0;
for i := 1 to n do
if а[j] >= t then k := k+1;
{суммирование элементов массива, удовлетворяющихзаданному условию}
s:= 0;
for i := 1 to n do
if a[i] >= t then s := s + a[i];
{объединение двух массивов одинакового размера}
for i := 1 to n do begin
с[2 i – 1] := a[i]; c[2 i] := b[i];
end;
{инвертирование массива}
m := n div 2;
for i := 1 to m do begin
p := a[i];
a[i] := a[n–i+1]; a[n–i+1 ] := p;
end;
{поиск в массиве заданного элемента и его номера}
l := 100;
st := 'элемента, равного L, нет'; k := 0;
100 |
Лабораторная работа № 8 |
|
|
for i := 1 to n do
if a[i] = l then k := i; if k = 0 then writeln(st)
else writeln('номер элемента i = ', k);
{циклический сдвиг элементов массива}
{исходные данные: n – размер массива, а – массив размером n, m – число позиций сдвига, р – массив размером не менее m }
for i := 1 to m do
p[i] := a[n – m + 1];
for i := n – m downto 1 do a[i + m] := a[i];
for i := 1 to n do a[i] := p[i];
{циклический сдвиг элементов массива}
{исходные данные: n – размер массива, а – массив размером n, m –число позиций сдвига, р – переменная, j – управляющая переменная внутреннего цикла}
for i := 1 to n – 1 do begin
р := a[i];
for j := i + 1 to n do if a[j] <> р then
begin
p := a[i]; k := j;
end;
a[k] := a[i]; a[i] := p;
end;
101
Лабораторная работа № 9
СТРОКОВЫЙ ТИП ДАННЫХ
Строки – это последовательности символов, при использовании в выражениях строка обязательно заключается в апострофы, иденти- фикатор строки – string, за которым обязательно следует заключен-
ное в квадратные скобки значение максимально допустимой длины строки. Формат описания строки:
Type
<имя типа> = string[i]; { i – переменная типа byte, i <= 255}
Var
<идентификатор, ...>: <имя типа>;
Переменную типа string можно задать и без описания типа:
Var
<идентификатор, ...>: string[i];
Строковые выражения – это выражения, в которых присутствуют строковые данные. Над строковыми данными допустимы операции сцепления и операции отношения.
Операция сцепления (+) применяется для сцепления нескольких строк в одну, длина результирующей строки не должна превышать
255.
Пример: выражение – 'А' + 'Б' + 'В', результат– 'АБВ'.
Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строк и имеют приоритет ниже операции сцепления, строки срав- ниваются слева направо до первого несовпадающего символа, ре- зультатоперации отношения – True или False.
Примеры: выражение – 'Принтер' = 'Принтер', результат–True; выражение – 'ХХХХХ' < 'ХХХХ', результат– False.
Для присваивания строковой переменной результата строкового выражения используется оператор присваивания (:=).
102 |
Лабораторная работа № 9 |
|
|
Пример: Str1 := 'Группастудентов'; Str2 := Str1 + ' второго курса';
Допускается смешение в одном выражении операндов строкового и литерного типа. К отдельным символам строки можно обратиться по номеру (индексу данного символа в строке). Индекс – целочис- ленная величина, записывается в квадратных скобках. Например, выражение Str2[8] обеспечит доступ к восьмому символу 'у' пере- менной Str2.
Для обработки строковых данных используются следующие стан- дартные процедуры и функции:
Процедуры:
Delete (St, Poz, N) – удаление N символов строки St, начиная с пози- ции Poz.
Пример: St := 'река Обь'; Delete(St, 1, 5) оставит 'Обь'.
Insert (Str1, Str2, Poz) – вставка строки Str1 в строку Str2, начиная с позиции Poz.
Пример: Str1 := 'ГП'; Str2 := 'БУ'; выражение Insert (Str1, Str2, 2) даст результат'БГПУ'.
Str (IBR, St) – преобразование числового значения величины IBR и помещение результатав строку St.
Примеры: IBR := 1500, Str(IBR:6, S) даст результат ' 1500'; IBR := 4.8Е + 3, Str(IBR:10, St) даст в переменной St выражение ' 4800'.
Val (St, IBR, Cod) – преобразует значение St в величину целочислен- ного или вещественного типа и помещает результатв IBR. Cod – це- лочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Cod = 0, если ошибка обнаружена (например, литерное значение переводится в числовое) Cod будет содержать номер позиции первого ошибочного символа, а значение IBR не определено.
Функции:
Copy (St, Poz, N) – выделяет из St подстроку длиной N символов, начиная с позиции Poz. Если Poz больше длины St, то результатом