Понятие массивов как последовательности переменных в памяти. Описание массивов. Понятие индекса при работе с массивами. Ввод-вывод и обработка одномерных и многомерных массивов.
Общие указания при составлении программ к данной теме:
1. Размер массива задать константой в блоке описания.
2. Массив заполнить случайными числами, если другого заполнения не диктует задача.
3. Вывести исходный массив и массив после преобразования по условию задачи.
Вариант №58
Вычислить все пары чисел - "близнецов" в первой сотне чисел натурального ряда. "Близнецами" называются такие простые числа p и q, для которых выполняется равенство: p-q=2 (пример простых чисел – «близнецов» 3 и 5 или 11 и 13).
Решение задачи:
Так как необходимо найти пары чисел-близнецов в первой сотне натурального ряда, то прописываем константу m равную 100. Нам известно, что по определению числа-близнецы – это такая пара простых чисел разность, которых равна двум. Для того чтобы определить простое число или нет рассматриваем только нечетные числа, используем свойство: наименьшее число, на которое делится натуральное число n, не превышает целой части квадратного корня из числа n и прерываем работу цикла, реализующего поиск делителей числа, при нахождении первого же делителя с помощью процедуры Break, которая реализует немедленный выход из цикла и передает управление оператору, стоящему сразу за оператором цикла. Счетчик цикла будет находится в переменной k. Когда очередное простое число найдено, он увеличивается на 1. Используем дополнительные переменные для хранения двух "последних" простых чисел и проверяем условие наличия близнецов - их разность должна быть ровна двум. Выводим на экран найденные пары, и количество чисел-близнецов.
Блок-схема программы
Листинг программы с комментариями
Program Example;
Uses CRT;
var
m,n,n1,n2,i,k: longint;
flag: boolean;
begin
Clrscr;
m :=100;
n1 := 1;
n2 := 3;
n := n2+2;
k:=0;
{рассматриваем только нечетные числа}
while n <= m do
begin
flag := true;
{ наименьшее число, на которое делится натуральное число n, не превышает целой части квадратного корня из числа n }
for i := 2 to round(sqrt(n)) do
if n mod i = 0 then
begin flag := false;
break
end;
if flag then begin n1 := n2; n2 := n;
{условие наличия чисел-близнецов}
if (n2 -n1) = 2 then
begin
{счетчик цикла}
k := k+1;
{выводим найденные пары на экран}
write(n1:4,n2:4,' ');
if k mod 5 = 0 then
writeln
end
end;
n := n+2
end;
writeln;
writeln('Количество пар чисел-близнецов =',k);
readln
end.
Общие указания при составлении программ к данной теме:
Создать матрицу с использованием генератора случайных чисел, вывести на экран исходную матрицу и результаты.
Вариант №46
Создать матрицу A[1..N,1..M]. Затем переставить элементы матрицы в возрастающем порядке слева направо, сверху вниз.
Решение задачи:
Задаем константами максимальный размер двумерного массива. Просим ввести размер массива, считываем эти значения. В цикле for присваиваем каждому элементу двумерного массива случайное значение от 1 до 100. В этом же цикле записывает это значение в одномерный массив и выводим на экран данный двумерный массив. Сортируем одномерный массив, сравнивая два соседних элемента, и если предыдущий оказался больше следующего, меняем их местами. Записываем построчно отсортированный одномерный массив в двумерный. Выводим на дисплей отсортированный двумерный массив.
Блок-схема программы
Листинг программы с комментариями
Program laba2;
Uses CRT;
const
nmax=20;
var
n,m,i,j,tmp,k: integer;
a: array[1..nmax,1..nmax] of integer;
b: array[1..nmax*nmax] of integer;
begin
Clrscr;
randomize;
write('Введите размер массива n, m: ');
readln(n,m);
writeln('Исходный:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(99);
write(a[i,j]:4);
end;
writeln;
end;
writeln;
{создаем одномерный массив размером n*m, выводим в него последовательно все элементы двумерного массива по строкам}
k:=0;
for i:=1 to n do
for j:=1 to m do
begin
inc(k);
b[k]:=a[i,j];
end;
{сортируем массив методом пузырька}
for i:=2 to n*m do
for j:=n*m downto i do
if b[j-1]>b[j] then
begin
tmp:=b[j-1];
b[j-1]:=b[j];
b[j]:=tmp;
end;
{"возвращаем" элементы в двумерный массив и выводим на печать}
k:=0;
writeln('Преобразованный массив:');
for i:=1 to n do
begin
for j:=1 to m do
begin
inc(k);
a[i,j]:=b[k];
write(a[i,j]:4);
end;
writeln;
end;
readln;
end.
Выводы о проделанной работе:
Массив-совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя. Ячейки называются элементами массива. Все элементы пронумерованы по порядку , и этот номер называется индексом элементы массива.
Научился выполнять ряд наиболее распространенных действий с массивами, описание, заполнение массива случайными числами, задание размерности массива с клавиатуры, вывод на экран, сравнение элементов массива.