Вы находитесь на странице: 1из 9

Цель и задачи работы

Изучение способов создания и обработки одномерных массивов


данных.

Задание на работу
Проверить и проанализировать работу примеров программ.
Разработать две программы по своему варианту. Подробнее см. в п. «5.
Порядок выполнения работы».

Ход работы

1) Проверка работы программ:


Пример 1:
program Ar1;
var i:Byte; S: Integer; X: Array[0..9] Of Integer;
Begin
S:=0;
For i:=0 To 9 Do
Begin
Write('Введите ',i,'-й элемент: '); ReadLn (X[i]);
S:=S+X[i];
end;
Write('Элементы массива: ');
For i:=0 To 9 Do Write(X[i], ';');
WriteLn(' cумма равна: ',S); ReadLn;
End.

Значение x Вычисленные Результаты работы


значения программы
1, 2, 3, 4, 5, 6, 7, 55 cумма равна: 55
8, 9, 10
2, 4, 6, 8, 10, 12, 110 cумма равна: 110
14, 16, 18, 20
1, 3, 5, 7, 9, 11, 100 cумма равна: 100
13, 15, 17, 19

Пример 2:
program Max_In_Array_2D;
var X:Array[1..5,1..4] Of Integer;
i,j,max,j_max: Integer;
Begin
Writeln('Введите элементы массива: ');
For j:=1 To 4 Do
Begin
For i:=1 To 5 Do
Read(X[i,j]);
ReadLn;
End;

Writeln('Элементы массива: ');


For j:=1 To 4 Do
Begin
For i:=1 To 5 Do
Write(X[i,j]:4);
WriteLn;
End;
j_max:=1; max:=X[1,1];
For j:=1 To 4 Do
For i:=1 To 5 Do
If X[i,j]>max Then
Begin
max:=X[i,j];
j_max:=j;
End;
WriteLn('Максимальное значение ', max, ' расположено
в строке номер ', j_max);
ReadLn;
End.

Значение x Вычисленные Результаты работы


значения программы
Элементы массива: Максимальное
1 2 3 4 5
20
6 7 8 9 10
значение 20
11 12 13 14 15 расположено в
16 17 18 19 20 строке номер 4

Элементы массива: Максимальное


59 87 14 65 32
95
54 95 87 25 45
значение 95
69 87 12 26 39 расположено в
40 82 19 54 33 строке номер 2

Элементы массива: Максимальное


59 78 65 12 32
98
45 65 98 49 62
значение 98
19 97 35 62 85 расположено в
73 35 37 69 91 строке номер 2

2) Задача №1

Ввести с клавиатуры массив из 10 целых чисел. Вывести на экран.


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

Алгоритм решения:
m – количество раз, которое встречается число,
n– переменная, которая в цикле считает количество раз, и обнуляется
при дальнейшей обработке цикла i.
p– индекс числа в массиве.
И еще, что требуется, это два цикла со счетчиками i и j. Первый цикл i
берет числа от 1 до 10, второй цикл j прогоняет массив от 1 до 10 и считает
количество совпадений if a[i] = a[j] then inc(n); занося в переменную n +1.
После обработки цикла j, ставим условие if n>m, то есть если
подсчитанный элемент больше того, что у нас есть, заносим данные о нем
m:=n; p:=i.
И после всего этого выводим элемент в массиве с индексом p:
writeln('Самый часто встречающийся элемент:' ,a[p]

Программа:

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


i,j,m,p,n:integer;
begin
writeln('введите 10 элементов массива');
for i:=1 to 10 do readln(a[i]);
m:=1;
p:=1;
for i:=1 to 10 do begin
n:=0;
for j:=1 to 10 do begin
if a[i] = a[j] then inc(n);
end;
if n>m then begin
m:=n;
p:=i;
end;
end;
writeln('Самый часто встречающийся элемент:',a[p]);
end.

Скрин программы:
Значение Вычисленные Результаты работы
n значения программы
1, 2, 3, 4, 4 Самый часто
4, 5, 5, 4, встречающийся
элемент:4
7, 8
1, 2, 3, 4, 7 Самый часто
5, 6, 7, 7, встречающийся
элемент:7
8, 9
4, 5, 4, 5, 4 Самый часто
4, 5, 4, 5, встречающийся
элемент:4
4, 5,
Задача №2

Создать массив из 15 целых случайных чисел в диапазоне от -20 до 20.


Выяснить, какое число встречается раньше — положительное или
отрицательное.

Алгоритм решения:
Потребуется цикл, которые будет работать с 1 до 15. В теле цикла
вводятся рандомно 15 чисел от -20 до 20. После цикла ветвление, которое
проверяет первое значение и выводит отрицательное оно или положительное.

Программа:

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


n, i:integer;
begin
for i:=1 to 15 do
begin
a[i]:=random(41)-20;
write(a[i]:4);
end;
writeln;
if a[1]>0 then writeln('Первое число положительное ')
else writeln('Первое число отрицательное ');
end.

Скрин:
Проверка значений:
Значение Вычисленные Результаты работы
n значения программы
-12 7 - Первое число
12 -8 19 отрицательное
17 13
-19 -1
-5 -18 15
-4 -13 -9
-11 -12 - Первое число
3 15 17 отрицательное
-20 1 -7
15 -1 -3
-8 8 -15
-14
4 12 5 + Первое число
-18 19 положительное
3 20 14
19 -17 1
-1 -6 12
17
Ответы на контрольные вопросы

1) Одномерный массив объявляется в разделе констант, разделе var (в


разделе описания переменных), описание типа массивов в разделе
описания типов или type.

2) 1.Заполнение одномерного массива посредством генератора случайных


чисел, состоящего из 10-ти элементов и описанного в разделе описаний
переменных
2.Прямое заполнение массива через ввод с клавиатуры с помощью
команд read/readln (на этот раз опишем тип массив и переменную
данного типа)
3.Метод присваивания элементам массива определённых значений с
помощью оператора присваивания ":="
4.Заполнение массива по определённому закону, т.е. с помощью
формул:
допустим что очередной элемент массива будет равен разности
квадратов двух предыдущих элементов, т.е. a[i]=sqr(a[i-1])-sqr(a[i-2])
5.Импорт данных (двоичный типизированный/нетипизированный,
текстовый)

3) Идем по первой половине всех значений в массиве. Запоминаем самое


большое. Назовём его x. Далее проходим по второй половине. Когда (и
если) находим значение, которое больше x, останавливаемся.
Обозначим его y. Чтобы это утверждение было истинным, y должно
находиться во второй половине массива. Тогда если второй максимум
присутствует в первой половине, это гарантирует, что найден
правильный максимум.

4) Пусть в переменной с именем Min хранится значение максимального


(минимального) элемента массива, а в переменной с именем Nmin– его
номер. Предположим, что первый элемент массива является
максимальным (минимальным), и запишем его в переменную Min,а в
Nmin – занесем его номер, то есть – «1». Затем все элементы, начиная
со второго, сравниваем в цикле с минимальным значением. Если
текущий элемент массива оказывается больше минимального, то
записываем его в переменную Min,а в переменную Nmin – текущее
значение индекса i.
5) В результате работы программы будет напечатано число 41