Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Удаление элементов одномерного массива

Задача:

Допустим, имеется одномерный массив, содержащий числа от 0 до 49 включительно. Требуется исключить из него все элементы, значения которых меньше 15.

Алгоритм решения задачи:

Присваивание значение n переменной m требуется, т.к. n - константа и не может быть изменена. Поскольку при "просмотре" массива в цикле while некоторые элементы будут удаляться, то значение m, обозначающее длину массива, будет уменьшаться.

Если очередной элемент не удаляется, то переходим к просмотру следующего элемента (i := i + 1) и не уменьшаем массив (m не меняется).

Программа на языке Паскаль:

const n = 20;

var

arr: array[1..n] of integer;

i, j, m: integer;

begin

randomize;

for i := 1 to n do begin

arr[i] := random(50);

write(arr[i]:4);

end;

m := n;

i := 1;

while i <= m do

if arr[i] < 15 then begin

for j := i to m - 1 do

arr[j] := arr[j+1];

m := m - 1

end

else

i := i + 1;

for i:= 1 to m do

write(arr[i]:4);

readln

end.

Выбор элементов массива

Задача:

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

Алгоритм решения задачи:

Допустим, у нас будет исходный массив из 50 элементов, значения которых формируются функцией random и лежат в диапазоне от -50 до 49 включительно. Условием, при котором значения одного массива должны быть скопированы в другой, будет попадание значения в диапазон от -5 до 5 включительно.

Программа на языке Паскаль:

const

m = 50;

type

arr = array[1..m] of shortint;

var

arr1, arr2: arr;

k, i: byte;

begin

randomize;

writeln ('Исходный массив: ');

for i := 1 to m do begin

arr1[i] := random(100)-50;

write (arr1[i]:4);

end;

writeln; writeln;

k := 0;

for i := 1 to m do

if (arr1[i] >= -5) and (arr1[i] <= 5) then begin

k := k + 1;

arr2[k] := arr1[i];

end;

write ('Отфильтрованный массив: ');

for i := 1 to k do

write (arr2[i]:3);

writeln;

writeln ('Количество элементов: ', k);

readln

end.

Примечания:

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

Процедура вычисления корней квадратного уравнения

Алгоритм решения задачи:

Представленная ниже программа с процедурой вычисления корней квадратного уравнения не возвращает в основную программу ничего (просто выводит результат на экран). Однако можно написать такую процедуру, которая будет использовать глобальные переменные x1 и x2. В результате в основной ветке программы можно будет использовать полученные корни квадратного уравнения.

Программа на языке Паскаль:

var

a, b, c: real;

procedure sq (a,b,c: real);

var d, x1, x2: real;

begin

d := b * b - 4 * a * c;

if d >= 0 then begin

x1 := (-b + sqrt (d)) / (2 * a);

x2 := (-b - sqrt (d)) / (2 * a);

if x1 = x2 then

writeln ('x1 = ', x1:6:2)

else

writeln ('x1 = ', x1:6:2, '; x2 = ', x2:6:2)

end

else

writeln ('Корней нет!')

end;

begin

write ('a = '); readln (a);

write ('b = '); readln (b);

write ('c = '); readln (c);

writeln (a:6:2,'x*x + ',b:6:2,'x + ',c:6:2,' = 0');

sq (a, b, c);

readln

end.