Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
261.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2.11 Mб
Скачать

Обработка массивов

Часто требуется вычислить сумму элементов массива, их среднее арифметическое значение или найти значения и номера максимального и минимального элементов, а также изменить значения элементов массива и т.д. При этом для одномерного и двумерного массива используются аналогичные алгоритмы, но в случае двумерного массива требуются вложенные циклы .

Действия с одномерными массивами

В векторе а содержится n элементов

  • Вычисление суммы элементов

s:=0;

for i:=1 to n do s:=s+a[i];

  • Вычисление произведения элементов

s:=1;

for i:=1 to n do s:=s*a[i];

  • Подсчет количества элементов, удовлетворяющих некоторому условию

k:=0;

for i:=1 to n do

if a[i] mod 2=0 then k:=k+1;

  • Поиск элемента с заданным значением.

Например, найдем номер первого элемента массива а, имеющего нулевое значение. Если таких элементов нет, то выдать сообщение.

i:=0;

repeat

i:=i+1;

until(a[i]=0) or (i=n)

if a[i]=0 then writeln(‘номер первого нулевого элемента’,i)

else writeln(‘таких элементов нет’);

  • Поиск максимального элемента и его номера

max:=a[1]; k:=1;

for i:=2 to n do

begin

if a[i] > max then

begin

max:=a[i];k:=I;

end;

Практические примеры

Программа 1

В данном одномерном массиве найти количество положительных, отрицательных и нулевых элементов, имеющих номера позиций кратные трем.

program zadacha_1;

uses crt;

var

a: array [1..100] of integer; {массив чисел}

i: integer;{индекс}

k1,k2,k3: integer; {количество положительных, отрицательных, нулевых элементов}

n: integer; {количество элементов массива}

begin

clrscr;

write('Введите количество элементов в массиве');

readln(n);

for i:=1 to n do

begin

writeln('a[',i,']=');

readln (a[i]);

end;

for i:=1 to n do

begin

if (i mod 3=0) and (a[i] < 0) then

k1:=k1+1;

if (i mod 3=0) and (a[i]=0) then

k2:=k2+1;

if (i mod 3=0) and (a[i] > 0) then

k3:=k3+1;

end;

writeln('Количество отрицательных элементов и номером

позиции кратным трем – ',k1);

writeln('Количество элементов равных нулю и номером

позиции кратным трем – ',k2);

writeln('Количество элементов больше нуля и номером

позиции кратным трем – ',k3);

readln;

end.

Программа 2

Найти максимальный элемент одномерного массива.

program zadacha_2;

uses crt;

var

a: array [1..50] of integer;

i,j,k,n,max:integer;

begin

clrscr;

writeln ('Введите количество элементов в массиве');

readln (n);

for i:=1 to n do

begin

write ('a[',i,']=');

readln (a[i]);

end;

max:=a[1];

for i:=1 to n do

begin

if a[i] > max then

begin

max:=a[i];

end;

end;

writeln ('max=', max);

readln;

end.

Программа 3

Дана последовательность из шести вещественных чисел. Найти в этой последовательности некоторое число.

program zadacha_6;

uses crt;

const

n=6;

a:array [1..n] of real=(12.3, 42, 15.6, 10, 4.25, 2);

var

i: integer;

j: real;

begin

clrscr;

write ('введите искомое число');

readln (j);

i:=0;

for i:=1 to n do

begin

if j=a[i] then

writeln ('число', a[i]:4:2,' на ', i,'-м месте')

else

writeln ('такого числа на ' , i,'-м месте нет');

end;

i:=i+1;

readln;

end.

Программа 4

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

program zadacha_4;

uses crt;

var

a: array [1..100] of integer;

i,j,k,n, min: integer;

begin

clrscr;

writeln('Введите количество элементов массива');

readln(n);

for i:=1 to n do

begin

writeln ('a[',i,']=');

readln(a[i]);

end;

min:=a[1];

for i:=1 to n do

begin

if (i mod 2 =0) and (a[i] < min) then

begin

min:=a[i];

end;

end;

writeln ('min=',min);

readln;

end.

Программа 5

Дана последовательность пяти целых чисел. Найти сумму элементов этой последовательности. Получить новую последовательность путем замены всех ненулевых элементов исходной последовательности на разность между элементом последовательности и найденной суммой.

program zadacha_5;

uses crt;

var

a: array [1..5] of integer;

s: integer;

i: integer;

begin

clrscr;

s:=0;

for i:=1 to 5 do

begin

write ('a[',i,']=');

readln (a[i]);

s:=s+a[i];

end;

i:=i+1;

writeln ('s=',s);

readln;

for i:=1 to 5 do

begin

if a[i] <> 0 then

begin

a[i]:=a[i]-s;

write ('a[',i,']=',a[i],' ');

end

else write ('a[',i,']=',a[i],' ');

end;

i:=i+1;

readln;

end.

Программа 6

Сформировать массив следующим образом а1 = 1, а2 = 1, а3 = 2, а4 = 2, а5 = 3, а6 = 3, а7 = -4 и т.д.

program zadacha_6;

var a: array [1..100] of integer;

i,j,k,n: integer;

begin

writeln('Введите количество элементов массива');

readln(n);

for i:=1 to n do

begin

if (i mod 2)=0 then

begin

j:= j+1;

a[i]:=i-j;

writeln ('a[',i,']=',a[i]);

end;

if (i mod 2)<>0 then

begin

k:=k+3;

a[i]:=i-k+1;

writeln ('a[',i,']=',a[i]);

end;

end;

readln;

end.

Программа 7

В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.

program zadacha_7;

uses crt;

var

a:array[1..50] of integer;

b:array[1..50] of integer;

i,j,n:integer; {переменные-счетчики, кол-во чисел}

begin

clrscr;

writeln('введите кол-во чисел ');

readln(n);

for i:=1 to n do

begin

write('a[',i,'] = '); {ввод элементов массива}

readln(a[i]);

end;

j:=0;

for i:=1 to n do begin

if a[i]=0 then begin {условие: если элемент массива равен нулю}

j:=j+1; {то: увеличиваем переменную-счетчик}

а[i]:=i; {и: присваиваем элементу нового массива номер позиции }

writeln('массив, сост. из номеров позиций нулевых элементов b[',j,']=',a[i]);

readln;

end;

end;

end.

Программа 8

Переписать элементы целочисленного, кратные 5, массива А в массив В, если такие элементы отсутствуют, то выдать сообщение.

program zadacha_8;

uses crt;

var

a:array[1..50] of integer;

b:array[1..50] of integer;

i,j,n:integer; {переменные-счетчики, кол-во чисел}

begin

clrscr;

writeln('введите кол-во чисел ');

readln(n);

for i:=1 to n do

begin

write('a[',i,'] = '); {ввод элементов массива}

readln(a[i]);

end;

j:=0;

for i:=1 to n do

begin

if a[i] DIV 5*5=a[i] then

begin

j:=j+1

b[j]:=a[i];

end;

end ;

if j=0 then writeln(‘Элементов кратных 5 нет’ ) else

for i:=1 to j do

begin

writeln( b[',i,']=',b[i]);

readln;

end;

end.

Программа 9

Дан массив x: array[1..n] of integer. Не используя других массивов, переставить элементы массива в обратном порядке.

program zadacha_28;

uses crt;

const

n=50;

var

x: array[1..n] of integer;{массив}

m: integer; {кол-во элементов в массиве}

i,j: integer; {счётчик}

k: integer; {доп. число}

begin

clrscr;

randomize;

write ('Введите кол-во элементов в массиве ');

readln(m);

for i:=1 to m do

begin

x[i]:= random(100)-73;

writeln ('x[',i,']= ',x[i]);

end;

writeln ('Новый массив ');

for i:=1 to (m div 2) do

begin

k:= x[i];

x[i]:= x[m+1-i];

x[m+1-i]:= k;

end;

for i:=1 to m do

begin

writeln ('x[',i,']= ',x[i]);

end;

readln;

end.

Программа 10

Используя массив, составить программу, которая напечатает на экране 20 чисел Фибоначчи. Последовательность Фибоначчи определяется равенствами

а[1] = а[2] = 1; а[k] = а[k-1] + а[k-2] при к > 2.

Использование массива позволяет создать эффективную программу. Для вывода каждого члена последовательности отведем на экране 5 позиций.

program fibon;

const n=20;

var а: array[1..n] of integer;

k: integer;

begin

а[1]:=1;а[2]:=1;

for k:=3 to n dо а[k]:=а[k-1]+а[k-2];

for k:=1 to n dо write(а[k]:5);

writeln

end.

Программа 11

Проверить есть ли в заданном массиве простые числа.

program zadacha_11;

uses crt;

var

a: array [1..1000] of integer;{массив}

n: integer; {кол-во элементов в массиве}

i: integer; {счётчик 1-го цикла}

y: integer; {счётчик 2-го цикла}

j: integer; {кол-во делителей}

m: integer; {кол-во простых чисел в массиве}

begin

clrscr;

write ('Введите кол-во элементов в массиве');

read(n);

for i:=1 to n do

begin

write ('a[',i,']=');

readln (a[i]);

end;

for i:=1 to n do

begin

j:=0;

for y:=1 to a[i] do

begin

if (a[i] mod y)=0 then

begin

j:=j+1;

end;

end;

if j=2 then

begin

m:=m+1;

end;

end;

write(' Кол-во простых чисел равно ', m);

readln;

end.

Программа 12

Дана последовательность А1, А2, ..., А10. Получить наибольшее среди А1+А10, А2+А9, ..., А5+А6.

program zadacha_12;

uses crt;

const

n=10;

var

A: array [1..100] of integer; {первая последовательность}

B: array [1..100] of integer; {вторая последовательность}

i,j: integer; {счётчики цикла}

S: integer; {сумма элементов}

max: integer; {максимальная сумма}

begin

clrscr;

for i:= 1 to n do

begin

write ('a(',i,')=');

readln (a[i]);

end;

for i:= 1 to 5 do

for j:= 5 to n do

begin

if i+j=11 then

begin

s:= a[i] + a[j];

b[i]:=s;

writeln ('b[',i,']=',b[i]);

readln;

end;

end;

max:= b[1];

for i:= 1 to 5 do

begin

if b[i]>max then

begin

max:= b[i];

end;

end;

writeln ('максимальная сумма равна',max);

readln;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]