АЛГОхитрости-2 Массивы

Содержание

Слайд 2

АЛГОхитрости Типовые алгоритмические приёмы с массивами Одномерные массивы. Считывание содержимого массива

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Одномерные массивы. Считывание содержимого массива
Считывание – вывод

на экран, в файл, на печать содержимого массива – реализуется обычно с использованием простого цикла ДЛЯ начиная с первого элемента до конца массива. Max – размерность массива.

И+ПРГ

Слайд 3

АЛГОхитрости Типовые алгоритмические приёмы с массивами Одномерные массивы. Сумма элементов массива

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Одномерные массивы. Сумма элементов массива
Все элементы массива

целых чисел Mas суммируются в переменную S, которая затем выводится на экран. Max – размерность массива.

И+ПРГ

Слайд 4

АЛГОхитрости Типовые алгоритмические приёмы с массивами Одномерные массивы. Среднее значение элементов

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Одномерные массивы. Среднее значение элементов массива
Для определения

среднего значения элементов массива сначала вычисляется их сумма и потом делится на количество элементов. Max – размерность массива. MMid– среднее значение.

И+ПРГ

Слайд 5

АЛГОхитрости Типовые алгоритмические приёмы с массивами Одномерные массивы. Наибольший (наименьший) элемент

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Одномерные массивы. Наибольший (наименьший) элемент массива
Определение наибольшего

элемента массива начинается с помещения значения первого элемента массива в переменную Maximum (Minimum), затем значение этой переменной поочерёдно сравнивается со всеми элементами массива и если находится большее (меньшее) значение в элементе массива, то оно заменяет значение переменной. Max – размерность массива.

И+ПРГ

Слайд 6

Задание: Введите с клавиатуры одномерный массив из 6 элементов, найдите и

Задание: Введите с клавиатуры одномерный массив из 6 элементов, найдите и

выведите на печать минимальный элемент массива

C

Pascal

Program min_elem_array;
(*Поиск мин. элем. целочисленного массива*)
Const
MS=6; (* размер массива  *)
Var
а : array [1..MS] of integer;
min, i : integer; (* min – мин. элем. массива*)
Begin
Write (' Введите элементы массива - ');
Writeln (MS,' – целые числа одной строке через пробел и нажмите Enter');
Write ('-> ');
For i:=1 to MS do
Read (a[i]);
min := a[1]; (* назначаем первый
введённый элемент min*)
(* Сравниваем остальные элементы с мин.*)
for i:=2 to MS do
if a[i] < min then min := a[i];
WriteLn ('Мин. элемент массива = ', min);
End.

// Поиск минимального элемента массива
#include
#define MS 6 //размер массива
void main ()
{
int a[MS]; // одномерный массив
int min, i; // min – минимальный элем. массива
printf ("\n Введите элементы массива – ");
printf ("%i", MS);
printf (" целых чисел в одной строке \n через пробел и нажмите Enter -> ");
for (i = 0; i < MS; i++)
scanf ("%i", &a[i]);
min = a[0]; // назнач. мин. первый элем. массива
// Сравниваем остальные элементы с мин.
for (i = 0; i < MS; i++)
if (a[i] < min) min=a[i];
printf ("Минимальный элемент массива");
printf ("= %i ", min);
}

Элементы ЯПВУ

МАССИВЫ

Практическое занятие

И+ПРГ

Слайд 7

АЛГОхитрости Типовые алгоритмические приёмы с массивами Одномерные массивы. Диапазон значений элементов

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Одномерные массивы. Диапазон значений элементов массива
Определяются наименьший

и наибольший элементы массива, они являются границами диапазона значений элементов массива.

И+ПРГ

Слайд 8

АЛГОхитрости Типовые алгоритмические приёмы с массивами Определить является ли введённое число палиндромом И+ПРГ

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Определить является ли введённое число палиндромом

И+ПРГ


Слайд 9

АЛГОхитрости Типовые алгоритмические приёмы с массивами Определить является ли введённое число

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Определить является ли введённое число палиндромом

Program

CyclePalindrom;
{Определить палиндром ли введённое число}
Var n,m,i,j : integer; P: array [1..5] of integer;
Begin
Write ('Введите целое число (до 32 767) n=');
ReadLn (n);
m:=n;
i:=0;
While (M <> 0) do
Begin
inc(i);
P[i] := m Mod 10;
m := m Div 10;
End;
write ('Число ',n);
for j:=1 to (i div 2) do
if (P[j] <> P[i])
Then
begin Write (' НЕ ' ); break; end
Else dec(i);
Writeln (' палиндром');
End.

// Определить палиндром ли введенное число
#include
#define SZ 5
main() {
int n, m, i=0, j, P[SZ];
printf("\nВведите целое число (до 32 767) n=");
scanf("%D", &n);
m=n;
while(m!=0)
{ P[i] = m % 10; m = (int) m / 10; i++; }
printf("Число %d", n);
for (j=0; j <= (int)i/2; j++)
if (P[j] != P[i-1])
{
printf(" НЕ ");
break;
}
else i--;
printf(" палиндром");
return 0;
}

И+ПРГ

// Вариант цикла проверки на палиндром
for (j=0; j <= (int)i/2; j++, i--)
if (P[j] != P[i-1])
{
printf(" НЕ ");
break;
}
else continue;

Слайд 10

АЛГОхитрости Типовые алгоритмические приёмы работы с массивами Одномерные массивы. Слияние двух

АЛГОхитрости
Типовые алгоритмические приёмы работы с массивами

Одномерные массивы. Слияние двух упорядоченных массивов

в третий упорядоченный. Max – размерность массива.

И+ПРГ

Слайд 11

C МАССИВЫ Pascal Практическое занятие Слить два упорядоченных по возрастанию массива

C

МАССИВЫ

Pascal

Практическое занятие

Слить два упорядоченных по возрастанию массива целых чисел введённых

с клавиатуры в один упорядоченный по возрастанию и вывести новый массив на печать.

#include
#include
#define SZ 5 //Размер исходных массивов
void main() {
int a[SZ], b[SZ]; // исходные массивы
int c[SZ*2]; // массив-результат
int k,i,m; // индексы массивов a, b и c
printf ("Слияние двух упорядоченных массивов в один,\n");
printf ("ввод элементов через пробел, завершение: Enter\n");
printf ("\nВведите первый массив %i -> ", SZ);
for (k=0; kprintf ("Введите второй массив %i -> ", SZ);
for (i=0; i k=i=m=0;
do { if (a[k] < b[i]) c[m++] = a[k++];
else if (a[k] > b[i]) c[m++] = b[i++];
else { c[m++] = a[k++]; c[m++] = b[i++]; } }
while ((k < SZ) && (i < SZ));
while (k < SZ) /*есть элем. массива А не переписанные в С*/
c[m++] = a[k++];
while (i < SZ) /* есть элементы B не переписанные в С */
c[m++] = b[i++];
printf("Массив-результат: \n");
for (i=0; i<2*SZ; i++) printf ("%i ", c[i]);
printf("\nДля завершения работы нажмите Enter\n");
getch(); }

Program MasSplit;
const SZ= 5; {Размер исходных массивов}
var k,L,m : integer; { индексы массивов a, b и c }
a, b : array[1..SZ] of integer; { исходные массивы }
c : array[1..2*SZ] of integer; { массив-результат }
i: integer; { индекс цикла вывода массива-результата }
Begin WriteLn ('Слияние двух массивов в один');
WriteLn ('элементы массива вводите через пробел, завершение: Enter'); WriteLn ('Введите первый массив -> ', SZ);
for k:=1 to SZ-1 do Read (a[k]); ReadLn (a[SZ]);
WriteLN ('Введите второй массив -> ', SZ);
for L=1 to SZ-1 do Read (b[L]); ReadLn (b[SZ]);
k:=1; L:=1; m:=1;
repeat if a[k] < b[L] then
begin c[m] := a[k]; m:=m+1; k:=k+1; end
else if a[k] > b[L] then
begin c[m] := b[L]; m:=m+1; L:=L+1; end else
begin c[m]:=a[k]; c[m+1]:=b[l]; k:=k+1; L:=L+1;m := m+1; end;
until (k>SZ) or (L>SZ); (*один из 2-х массивов переписан в С*)
while k<=SZ do (* есть элементы А не переписанные в С *)
begin c[m] := a[k]; k := k+1;m := m+1; end;
while l <= SZ do (* есть элементы B не переписанные в С *)
begin c[m]:=b[L]; L := L+1; m := m+1; end;
WriteLn ('Массив-результат'); for i:=1 to 2*SZ do Write (c[i],' ');
WriteLn; WriteLn('Для завершения работы нажмите Enter.');
ReadLn;
End.

И+ПРГ

АЛГОхитрости

Слайд 12

АЛГОхитрости Типовые алгоритмические приёмы с массивами Двумерные массивы. Считывание содержимого массива

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Двумерные массивы. Считывание содержимого массива
Считывание – вывод

на экран, в файл, на печать содержимого массива – реализуется обычно с использованием циклов ДЛЯ начиная с первого элемента до конца массива. Первый индекс (i) определяет номер строки, второй индекс (j) – номер столбца. Max_i – количество строк массива, Max_j – количество столбцов.

Для смещения по каждому индексу массива выделяется отдельный цикл. Циклы вложены один в другой.
Внешний цикл (по индексу - i) смещается по строкам (выбирает строку) и передает управление внутреннему циклу.
Внутренний цикл (по индексу - j) смещается по столбцам – выбира-ет в текущей строке ячейку, соответствующую столбцу массива (таблицы).
Затем управление возвращается внешнему циклу, происходит переход к следующей строке массива.
И так пока не прочитается весь массив.

И+ПРГ

Слайд 13

Двумерные массивы. Загрузка содержимого массива с клавиатуры и вывод его на

Двумерные массивы. Загрузка содержимого массива с клавиатуры и вывод его на

экран (пример вывода двумерного массива на экран)

// Заполнение двумерного массива
#include
// Количество строк массива
#define SIZE_i 5
// Количество столбцов массива
#define SIZE_j 5
void main ()
{
int a[SIZE_i][SIZE_j]; // Двумерный массив
int i, j; // индексы массива
printf("\nВведите элементы массива\n");
см. продолжение

Продолжение
// Ввод элементов массива с клавиатуры
printf("После ввода числа - Enter\n");
for (i=0; i for (j=0; j {
printf ("a[%i][%i] = ",i,j);
scanf ("%i",&a[i][j]);
}
// Вывод массива на экран
for (i=0; i {
for (j=0; j printf("%4i \n",a[i][j]);
printf("\n");
}
}

C / С++

Массивы

И+ПРГ

АЛГОхитрости
Типовые алгоритмические приёмы с массивами

Слайд 14

Двумерные массивы. Загрузка содержимого массива двумерных матриц (2x2) с клавиатуры и

Двумерные массивы. Загрузка содержимого массива двумерных матриц (2x2) с клавиатуры и

вывод его на экран

Массивы

И+ПРГ

Pascal

Program Matrica;
Const
N=2; (* Количество строк массива *)
M=2; (* Количество столбцов массива *)
K=2; (* Размерность матрицы *)
Type
(* Тип данных – двумерный массив *)
Matr=array [1..N,1..M] of integer;
Var
(* массив двумерных матриц*)
x : array [1..K]of Matr;
i,j,p : integer; (* индексы массивов *)
Begin
(* Загрузка данных *)
writeln ( 'Ввод данных в массив
двумерных матриц ');
for i:=1 to K do
for j:=1 to N do
for p:=1 to M do
write ('X[', i,',', j,',‘,p'] = ');
readln (x[i,j,p]);
см. продолжение

Продолжение
(* Вывод на экран *)
for i:=1 to K do
begin
writeln(i,'-я матрица');
for j:=1 to N do
begin
for p:=1 to M do
write (x[i,j,p],' ');
writeln;
end;
end;
writeln(‘Для выхода из программы
нажмите, пожалуйста, Enter’);
readln;
end.

АЛГОхитрости
Типовые алгоритмические приёмы с массивами