
Var I,p:integer;
begin for i:=1 to n-1 do begin p:=pos(' ',st);
st:=copy(st,p+1,length(st)-p) end;
p:=pos(' ',st);//конец нужной подстроки
if p <> 0 then result:=copy(st,1,p-1) else result:=st end;
procedure TForm1.Button1Click(Sender: TObject);
const nn=6; type size=1..nn;
Var a:array[size,size]of integer; m,n:size; max:integer;
Imax,jmax: size; I,j,k: integer;
begin
m:=StrToInt(Edit1.text); n:=StrToInt(Edit2.text);
{ Ввод матрицы из Edit3}
k:=1;
for i:=1 to m do
for j:=1 to n do
begin
a[i,j]:=StrToInt(GetSubStr(Edit3.text,k));
k:=k+1
end;
{Вывод номеров строк в 0-м столбце и столбцов в 0-й строке}
with StringGrid1 do
begin i:=0; //0-й столбец
for j:=1 to RowCount-1 do //вывести номера строк
Cells[i,j]:=IntToStr(j);
j:=0; //0-я строка
for i:=1 to ColCount-1 do //вывести номера столбцов
Cells[i,j]:=IntToStr(i); end;
{ Вывод элементов матрицы в таблицу }
with StringGrid1 do
for i:=1 to m do
for j:=1 to n do Cells[j,i]:=IntToStr(a[i,j]);
max:=a[1,1]; imax:=1; jmax:=1;
for i:=1 to m do
for j:=1 to n do
if a[i,j] > max then
begin max:=a[i,j];imax:=1;jmax:=1 end;
Label8.Caption:='max='+IntToStr(max);
Label9.Caption:='imax='+IntToStr(imax);
Label10.Caption:='jmax='+IntToStr(jmax);end;
Сценарий выполнения программы:
Запустить программу (Run).
Ввести в поле Edit1 значение m - количество строк матрицы
6.
Ввести в поле Edit2 значение n - количество столбцов матрицы n.
Ввести в поле Edit3 m
n элементов матрицы, отделяя одно число от другого пробелом.
Нажать кнопку “Расчет”.
Проанализировать появившиеся результаты (рисунок выше).
Для завершения работы нажать кнопку “Выход”.
Задание к лабораторной работе № 5
1. Даны переменные К, значения массивов А(К) или А(К,К) и переменные В, С, Д в зависимости от условий задачи варианта (в вариант входят четыре самостоятельные задачи). Составьте схемы алгоритмов и программы вычисления значений переменных, указанных в варианте задания. Повторяющиеся вычисления вынести по возможности в подпрограммы.
Вариант задания |
Имя переменной |
Вариант задания |
Имя переменной |
1 |
М1, Р2,Р14,Р26 |
9 |
М8,Р9,Р11, Р16 |
2 |
М2, ,Р7,Р15,Р27 |
10 |
М9, ,Р13,Р23,Р17 |
3 |
М3,М7,Р8, Р28 |
11 |
Р6,М13,Р24,Р18 |
4 |
М4,М11,Р5, Р29 |
12 |
Р10,М8, Р25,Р19 |
5 |
,М8,Р1,Р18,Р25 |
13 |
М10, Р4, Р22, Р24 |
6 |
Р3,М6,Р13,Р19, |
14 |
М5, M4,Р2, ,Р30 |
7 |
М6,М10,Р13,Р20 |
15 |
М12, М7, Р16, Р25 |
8 |
Р3,Р12,Р21,Р15 |
16 |
М7, Р5, Р2,Р17 |
М1 – количество нулевых элементов матрицы А(К,К);
М2 – количество положительных элементов матрицы А(К,К);
М3 – количество положительных элементов вектора А(К);
М4 – количество отрицательных элементов матрицы А(К,К);
М5 – количество нулевых элементов вектора А(К), заключённых между двумя первыми соседними нулями; если в векторе А нет нулевых элементов, то М5=0;
М6 – количество диагональных элементов матрицы А(К,К), равных заданному числу С;
М7 – количество диагональных элементов матрицы А(К,К), не равных заданному числу С;
М8 – количество элементов матрицы А(К), находящихся в пределах В Аi С (В и С заданы);
М9 – количество нулевых элементов вектора А(К), находящихся за первым элементом вектора А, равным заданному числу С;
М10–количество нулевых элементов вектора А(К), предшествующих (имеющих меньший индекс) первому элементу вектора А, равному заданному числу С;
М11 – номер (индекс) минимального элемента вектора А(К);
М12 – номер (индекс) строки максимального элемента матрицы А;
М13 – номер (индекс) столбца максимального элемента матрицы А (К,К);
Р1 – сумма элементов матрицы А(К,К);
Р2 – сумма положительных элементов матрицы А(К,К);
Р3 – сумма элементов вектора А(К), больших заданного числа С;
Р4 – среднее арифметическое значение вектора А(К);
Р5 – сумма отрицательных элементов вектора А(К), имеющих чётный индекс (стоящих на чётных местах);
Р6 – сумма элементов массива А(К), значения которых лежат в пределах В Аi С (В и С заданы);
Р7
– сумма элементов вектора А(К), значения
которых удовлетворяют условию: Аi
C
или Аi
Д
(С и Д заданы, С<Д);
Р9 – значение максимального элемента матрицы А(К,К);
Р10 – произведение элементов матрицы А(К,К), больших максимального элемента первой строки матрицы А;
Р11 – сумма элементов вектора А(К), стоящих на чётных местах (с чётными индексами) и больших С;
Р12 – сумма положительных элементов вектора А(К), стоящих на нечётных местах;
Р13 – произведение отрицательных элементов матрицы А(К,К);
2. Дан целочисленный массив А(К) (0<К<50; 0<Аi<100). Составьте схемы алгоритмов и программы вычисления значений переменных, указанных в варианте задания:
Р14 – значение элемента, сумма цифр которого максимальна. Если таких элементов несколько, то сумму значений таких элементов;
Р15 – максимальный делитель, оканчивающийся на 3 для максимального числа А(К);
Р16 – наибольший чётный делитель для максимального числа А(К);
Р17 – сумма делителей из заданного диапазона (нижняя граница диапазона n1 и верхняя граница диапазона n2);
Р18 – значение минимального нечётного делителя, большего 1 для М3 (числа равного количеству положительных элементов вектора А(К));
Р19 – количество делителей делящихся на 5, для числа равного сумме положительных элементов А(К), стоящих на нечётных местах (Р12);
Р20–величина простого делителя для максимального числа А(К);
Р21 – сумма простых делителей, заканчивающихся на 3 для максимального элемента А(К);
Р22 – сумма тех элементов массива, у которых совпадают младшая и старшая цифра;
Р23 –сумма элементов, индексы которых являются степенью двойки;
Р24 – максимальный элемент из чисел, встречающихся а А(К) более одного раза;
Р25 – минимальное число среди элементов массива, сумма цифр которых максимальна;
Р26 – наименьшее общее кратное (НОК) простых чисел А(К);
Р27 – НОК элементов А(К), индексы которых кратны 3;
Р28 – произведение элементов, сумма цифр которых максимальна;
Р29 – сумма индексов простых чисел;
Р30 – сумма тех чисел вектора А(К), которые имеют наименьшее количество цифр в своём изображении и являются простыми;
Р31 – индексы элемента вектора А(К), равного заданному числу В.
Темы для подготовки и контрольные вопросы:
Что такое массив?
Как объявить одномерный статический массив(способы)?
Каким параметром в объявлении массива определяется размер массива и его размерность?
Как объявить динамический массив? В чем его отличие от статического? Приведите пример объявления динамического массива вещественного типа.
Приведите список подпрограмм, определенных в OP для работы с динамическим массивом.
Как определить, какие операции можно выполнить над значениями элементов массива?
Какие вы знаете операции по изменению массива?
Как называется способ доступа к отдельному элементу массива? И почему он так называется?
Что общего между всеми элементами массива? Что у каждого свое?
Какие из приведенных описаний являются неправильными и почему?
Var a:array [1..20] of integer;
Type ar:array[1..20];
Var
b:ar;
S:array[1..n] of integer;
A:array of integer;
D:array[1] of char;
Сколько элементов в каждом из следующих массивов?
Var
m:array[2..20] of byte;
Type ar=array[0..8] of integer;
Ar1=array[-5..5] of integer;
Ch:array[‘a’..’z’] of byte;
Ch1:array[‘0’..’9’] of integer;
Var
a:ar;
B:ar1;
C:array[char] of boolean;
D:array of real;
N,i: byte;
Begin n:=10; setLength(D,n);n:=n+2; SetLength(D,n); end.
Приведите фрагмент на языке Паскаль для ввода данных (целых и вещественных) в массив с клавиатуры и датчиком случайных чисел.
Приведите фрагмент программы,
Разработайте программу для поиска минимального элемента среди элементов, имеющих четный индекс.(Массив состоит из 1000 вещественных чисел из диапазона 2.15..3.0
Разработайте программу для удаления всех элементов равных заданному значению А из динамического символьного массива, состоящего из N элементов.
Найдите ошибки и объясните их.
Var
x,y:array[1..20] of real;
z,u:array[1..50] of real;
A:array of real;
i :integer;
Begin
read(x,y);
If x<>y then begin z:=x; x:=y; y:=z end
Else x:=x+y;
For i:=1 to 20 do u[i]:=x[i]+y[i]; z:=u; write(x).
A[0]:=5;
End.
Имеется описание массивов
Var
x:array[1..40] of char;
Y:array[0..39] of char;
Переписать массив Х в массив Y.(Можно ли переписать массив X в Y с помощью оператора y:=x.)
.Найдите ошибку шага выполнения
Дан массив из N (0<N<=100000) целых чисел из диапазона (-32000..32000).Удалить из массива все четные числа. Проверьте программу на следующих тестах
а) N=7 ;a=(1,2,2,3,4,4,5,6)
б) N=5 a=(1,2,3,4,5))
Const L=100000;
Type
index=1..L;
Ar=array[index] of integer;
Var
a:ar;
m,j,i:integer; {m правая граница обрабатываемого массива}
Begin {массив введен}
m:=N;
for i:=1 to m do
begin
if not(odd(a[i])) then
begin
for j:=i to m-1 do a[j]:=a[j+1];
a[m]:=0;m:=m-1;
end
end
end.
Приведите заголовок подпрограммы процедуры, которая заполняет динамический массив из N элементов целого типа и фрагмент основной программы с вызовом этой процедуры. Можно ли в этой программе процедуру заменить функцией?
Можно ли обращаться к элементам динамического массива с символьным индексом?
Какая функция позволит определить текущее количество элементов в динаическом массиве?
Дан массив целых чисел. Размер массива определяется пользователем. Разработайте функцию, которая формирует массив из четных чисел исходного массива. Ввод исходного массива и вывод результата функции выполните в основной программе.
Объясните, в каких задачах требуется использование массива, а в каких можно обойтись и последовательностью.
Как рассчитать объем памяти требуемый массиву?
Какого типа может быть индекс массива?
Какой тип может быть базовым для массива?
Какой параметр в описании определяет: размерность массива и способ нумерации?