1 Формирование
Динамические массивы
Объявление массива
Задание размера одномерного динамического массива:
procedure SetLength(var a: System.Array; n: integer);
Задание размера n-мерного динамического массива:
procedure SetLength(var a: System.Array; n1,n2,...: integer);
Возвращает длину m-той размерности динамического массива (размерности нумеруются с нуля)
function Length(a: System.Array; m: integer): integer;
Индекс с 0 !!!
var
a :array of real;
i, N : integer;
begin
write('Введите размер массива: ');
readln(N);
// задание размера массива
SetLength(a,N);
// заполнение массива значениями
writeln('Введите значения элементов массива: ');
for i := 0 to N-1 do
begin
write('a[',i,']=');
readln(a[i]);
end;
end.
const
N = 10;
var
a: array [0..N-1] of integer;
b: array of integer;
i,j : integer;
begin
for i := 0 to N-1 do
begin// заполнение массива значениями
a[i] := random(-2, 2);
writeln('a[', i, ']=', a[i]);
end;
j := 0;
for i := 0 to N-1 do
begin// анализ a и заполнение b
if a[i]<>0 then
begin
SetLength(b, length(b)+1);
b[j] := a[i];
j := j + 1;
end;
end;
writeln;
for i := 0 to length(b) - 1 do writeln('b[', i, ']=', b[i]);
end.
Уменьшить размер массива на 1
a[0]=0
a[1]=0
a[2]=1
a[3]=-1
a[4]=0
a[5]=1
a[6]=1
a[7]=-1
a[8]=0
a[9]=-1
a[0]=1
a[1]=-1
a[2]=1
a[3]=1
a[4]=-1
a[5]=-1
Переписать 4-5, 3-4, 2-3
Записываем 11 в 2
i := 0;
while i < length(a) do
begin
if a[i] = 0 then
begin //если есть нулевой, то сдвигаем влево
setlength(a,length(a)+1);
for j := length(a)-1 downto i+1
do a[j]:= a[j-1];
inc(i);
end;
inc(i);
end;
writeln;
for i := 0 to length(a) - 1 do writeln('a[', i, ']=', a[i]);
end.
SetLength(a, 3,6); - задание размера массива 3x6 ([0..2,0..5])
Алгоритм решения:
Считать границы вычисления функции;
Объявить двумерный массив;
Заполнить массив значениями.
Введите параметры отрезка: a, b, h : -1 3 0.3
x=-1.00 y=5.00
x=-0.70 y=6.50
x=-0.40 y=8.00
x=-0.10 y=9.50
x=0.20 y=11.00
x=0.50 y=12.50
x=0.80 y=14.00
x=1.10 y=15.50
x=1.40 y=17.00
x=1.70 y=18.50
x=2.00 y=20.00
x=2.30 y=21.50
x=2.60 y=23.00
x=2.90 y=24.50
Алгоритм решения:
Заполнить массив значениями;
Вывести на экран матрицу;
Рассчитать среднее арифметическое для каждой строки;
Выбрать из средних арифметических наибольшее.
row := 0;
mean := 0;
for i := 1 to N do
begin
sum := 0;
for j := 1 to M do sum := sum + A[i,j];
if (sum/M) > mean then
begin
mean := sum/M;
row := i;
end;
end;
writeln('Наибольшее среднее арифметическое ',mean:3:1,' в строке ',row);
end.
Вклад верно выполненного задания – 11.1% рейтинга
Время выполнения теста – 30 минут.
2333444
1074
6554
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть