Программирование на языке Паскаль Массивы 1.Массивы (объявление, заполнение)Массивы (объявление, заполнение) 2.Поиск в массивеПоиск в массиве 3.Максимальный.

Презентация:



Advertisements
Похожие презентации
Алгоритмы сортировки. 2 Сортировка Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме.
Advertisements

1 Программирование на языке Паскаль Тема 4. Сортировка массивов.
Массивы Массивы Ввод и вывод массива Максимальный элемент массива Обработка массивов Сортировка массивов Поиск в массивеМассивыВвод и вывод массиваМаксимальный.
О БРАБОТКА МАССИВОВ 1. Включение элемента в заданную позицию массива 2. Удаление элементов массива. Удаление элементов массива. Удаление элементов массива.
К. Поляков, Программирование на языке Паскаль Часть II Тема: Массивы.
Программирование на языке Паскаль Массивы. 2 Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности:
1 Программирование на языке Паскаль Часть II Тема 4. Сортировка массивов © К.Ю. Поляков,
Программирование на языке Паскаль Часть II Матрицы.
К. Поляков, Программирование на языке Паскаль Часть III Тема. Массивы.
Матрицы 1. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
Программирование на языке Си Часть II Тема 1. Массивы Учитель информатики: Корогод В.А.
К. Поляков, Программирование на языке Паскаль Часть II Тема: Поиск максимального элемента массива.
1 Программирование на языке Паскаль Матрицы. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
Язык программирования Pascal Массивы А. Жидков. Массивы Массив – поименованный набор однотипных элементов, каждый из которых имеет свой номер, (индекс).
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
1 Случайные числа на языке Паскаль Тип величины Диапазон значений Паскаль Веществен ный [ 0, 1 ]x : = random [ 0, a]x : = random * a [ a, b ]x : = random.
1 Программирование на языке Паскаль Тема 1. Массивы.
Программирование на языке Си Часть II Матрицы Учитель информатики: Корогод В.А.
Транксрипт:

Программирование на языке Паскаль Массивы 1. Массивы (объявление, заполнение)Массивы (объявление, заполнение) 2. Поиск в массиве Поиск в массиве 3. Максимальный элемент массива Максимальный элемент массива 4. Сортировка массивов Сортировка массивов 5. Двумерные массивы - матрицы Двумерные массивы - матрицы 6. Обработка массивов Обработка массивов

Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности: все элементы имеют один тип весь массив имеет одно имя все элементы расположены в памяти рядом Примеры: список учеников в классе квартиры в доме школы в городе данные о температуре воздуха за год

Массивы A массив 3 15 НОМЕР элемента массива (ИНДЕКС) НОМЕР элемента массива (ИНДЕКС) A[1] A[2] A[3] A[4] A[5] ЗНАЧЕНИЕ элемента массива A[2] НОМЕР (ИНДЕКС) элемента массива: 2 ЗНАЧЕНИЕ элемента массива: 10

Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в памяти Массив целых чисел: Размер через константу: имя начальный индекс конечный индекс тип элементов тип элементов var A: array[1.. ] of integer; const N=5; N var A : array[ ] of integer ;

Объявление массивов Массивы других типов: Другой диапазон индексов: Индексы других типов: var X, Y: array [1..10] of real; C: array [1..20] of char; var X, Y: array [1..10] of real; C: array [1..20] of char; var Q: array [0..9] of real; C: array [-5..13] of char; var Q: array [0..9] of real; C: array [-5..13] of char; var A: array ['A'..'Z'] of real; B: array [False..True] of integer;... A['C'] := *A['B']; B[False] := B[False] + 1; var A: array ['A'..'Z'] of real; B: array [False..True] of integer;... A['C'] := *A['B']; B[False] := B[False] + 1;

Что неправильно? var a: array[10..1] of integer;... A[5] := 4.5; var a: array[10..1] of integer;... A[5] := 4.5; [1..10] var a: array ['z'..'a'] of integer;... A['B'] := 15; var a: array ['z'..'a'] of integer;... A['B'] := 15; A['b'] ['a'..'z'] var a: array [0..9] of integer;... A[10] := 'X'; var a: array [0..9] of integer;... A[10] := 'X';

Массивы Объявление: Ввод с клавиатуры: Поэлементные операции: Вывод на экран: const N = 5; var a: array[1..N] of integer; i: integer; const N = 5; var a: array[1..N] of integer; i: integer; for i:=1 to N do begin write('a[', i, ']='); read ( a[i] ); end; for i:=1 to N do begin write('a[', i, ']='); read ( a[i] ); end; a[1] = a[2] = a[3] = a[4] = a[5] = Почему write ? ? for i:=1 to N do a[i]:=a[i]*2; writeln('Массив A:'); for i:=1 to N do write(a[i]:4); writeln('Массив A:'); for i:=1 to N do write(a[i]:4); Массив A:

Способ заполнения: Типизированные константы В блоке CONST можно описывать не только константы, но и переменные величины. Эти переменные величины из-за того, что они описаны в таком странном месте, приобретают неудачное название типизированные константы, но переменными быть не перестают, а самое для нас главное - здесь им можно удобно придавать начальные значения. Вот пример: CONST n : lnteger = 800; е : Real = 2.7; Приведем программу вычисления средней недельной температуры. Определения констант, если массив t описать как типизированную константу: CONST k=7; {k - обычная, нетипизированная константа} t : агау [1..k] of Integer = (-14, -12, -8, -2,0,1, -3); {t - типизированная константа} VAR s,i :lnteger; BEGIN s:=0; for i:=1 to k dos:=s+t[i]; WriteLn(s/к) ; END. Здесь в круглых скобках задается список начальных значений переменной t, а именно: t[1] равно -14, t[2] равно -12 и т. д. В разделе операторов эти значения можно менять.

Задания «А": Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива. Пример: Введите пять чисел: среднее арифметическое «Б": Ввести c клавиатуры массив из 5 элементов, найти минимальный из них. Пример: Введите пять чисел: минимальный элемент 3 При изменении N остальная программа не должна изменяться! !

Поиск в массиве

Задача – найти в массиве элемент, равный X, или установить, что его нет. Решение: для произвольного массива: линейный поиск (перебор) недостаток: низкая скорость Как ускорить? – заранее подготовить массив для поиска как именно подготовить? как использовать "подготовленный массив"?

Линейный поиск nX := 0; for i:=1 to N do if A[i] = X then begin nX := i; break; {выход из цикла} end; nX := 0; for i:=1 to N do if A[i] = X then begin nX := i; break; {выход из цикла} end; nX := 0; { пока не нашли...} if nX < 1 then writeln('Не нашли...') else writeln('A[', nX, ']=', X); nX := 0; { пока не нашли...} if nX < 1 then writeln('Не нашли...') else writeln('A[', nX, ']=', X); nX – номер нужного элемента в массиве Что плохо? ? Улучшение: после того, как нашли X, выходим из цикла. for i:=1 to N do { цикл по всем элементам } if A[i] = X then { если нашли, то... } nX := i; {... запомнили номер} for i:=1 to N do { цикл по всем элементам } if A[i] = X then { если нашли, то... } nX := i; {... запомнили номер} nX := 0; i := 1; while i <= N do begin if A[i] = X then begin nX := i; i := N; end; i := i + 1; end; nX := 0; i := 1; while i <= N do begin if A[i] = X then begin nX := i; i := N; end; i := i + 1; end; break; i := N;

Двоичный поиск X = 7X = 7 X < 8X < X > 4X > X > 6 1. Выбрать средний элемент A[c] и сравнить с X. 2. Если X = A[c], нашли (выход). 3. Если X < A[c], искать дальше в первой половине. 4. Если X > A[c], искать дальше во второй половине.

Двоичный поиск nX := 0; L := 1; R := N; {границы: ищем от A[1] до A[N] } if nX < 1 then writeln('Не нашли...') else writeln('A[', nX, ']=', X); while R >= L do begin c := (R + L) div 2; if x < A[c] then R := c - 1; if x > A[c] then L := c + 1; end; номер среднего элемента if X = A[c] then begin nX := c; R := L - 1; { break; } end; if X = A[c] then begin nX := c; R := L - 1; { break; } end; нашли Почему нельзя while R > L do begin … end; ? ? выйти из цикла сдвигаем границы 1LcRN

Сравнение методов поиска Линейный Двоичный подготовка нет отсортировать число шагов N = 222 N = N = N= N N log 2 N+1

Максимальный элемент массива

Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: { считаем, что первый элемент – максимальный } for i:=2 to N do if a[i] > { максимального } then { запомнить новый максимальный элемент a[i] } { считаем, что первый элемент – максимальный } for i:=2 to N do if a[i] > { максимального } then { запомнить новый максимальный элемент a[i] } Почему цикл от i=2 ? ?

Максимальный элемент max := a[1]; { считаем, что первый – максимальный } iMax := 1; for i:=2 to N do { проверяем все остальные } if a[i] > max then { нашли новый максимальный } begin max := a[i]; { запомнить a[i] } iMax := i; { запомнить i } end; max := a[1]; { считаем, что первый – максимальный } iMax := 1; for i:=2 to N do { проверяем все остальные } if a[i] > max then { нашли новый максимальный } begin max := a[i]; { запомнить a[i] } iMax := i; { запомнить i } end; Дополнение: как найти номер максимального элемента? Как упростить? ? По номеру элемента iMax всегда можно найти его значение a[iMax]. Поэтому везде меняем max на a[iMax] и убираем переменную max. a[iMax]

Программа program qq; const N = 5; var a: array [1..N] of integer; i, iMax: integer; begin writeln('Исходный массив:'); for i:=1 to N do begin a[i] := random(100) + 50; write(a[i]:4); end; iMax := 1; { считаем, что первый – максимальный } for i:=2 to N do { проверяем все остальные } if a[i] > a[iMax] then { новый максимальный } iMax := i; { запомнить i } writeln; {перейти на новую строку} writeln('Максимальный элемент a[', iMax, ']=', a[iMax]); end; program qq; const N = 5; var a: array [1..N] of integer; i, iMax: integer; begin writeln('Исходный массив:'); for i:=1 to N do begin a[i] := random(100) + 50; write(a[i]:4); end; iMax := 1; { считаем, что первый – максимальный } for i:=2 to N do { проверяем все остальные } if a[i] > a[iMax] then { новый максимальный } iMax := i; { запомнить i } writeln; {перейти на новую строку} writeln('Максимальный элемент a[', iMax, ']=', a[iMax]); end; for i:=1 to N do begin a[i] := random(100) + 50; write(a[i]:4); end; for i:=1 to N do begin a[i] := random(100) + 50; write(a[i]:4); end; iMax := 1; { считаем, что первый – максимальный } for i:=2 to N do { проверяем все остальные } if a[i] > a[iMax] then { новый максимальный } iMax := i; { запомнить i } iMax := 1; { считаем, что первый – максимальный } for i:=2 to N do { проверяем все остальные } if a[i] > a[iMax] then { новый максимальный } iMax := i; { запомнить i } случайные числа в интервале [50,150) поиск максимального

Задания «А": Заполнить массив из 10 элементов случайными числами в интервале [ ] и найти в нем максимальный и минимальный элементы и их номера. Пример: Исходный массив: максимальный a[4]=10 минимальный a[8]=-10 «Б": Заполнить массив из 10 элементов случайными числами в интервале [ ] и найти в нем два максимальных элемента и их номера. Пример: Исходный массив: максимальные a[4]=10, a[7]=8

Сортировка массивов Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …).

Сортировка Задача: переставить элементы массива в порядке возрастания. Алгоритмы: простые и понятные, но неэффективные для больших массивов метод пузырька метод выбора сложные, но эффективные "быстрая сортировка" (Quick Sort) сортировка "кучей" (Heap Sort) сортировка слиянием пирамидальная сортировка сложность O(N 2 ) сложность O(N·logN) время N O(N 2 ) O(N·logN)

Метод пузырька Идея – пузырек воздуха в стакане воды поднимается со дна вверх. Для массивов – самый маленький ("легкий") элемент перемещается вверх ("всплывает") начиная снизу, сравниваем два соседних элемента; если они стоят "неправильно", меняем их местами за 1 проход по массиву один элемент (самый маленький) становится на свое место ый проход 2-ой проход 3-ий проход Для сортировки массива из N элементов нужен N-1 проход (достаточно поставить на свои места N-1 элементов).

Программа 1-ый проход: 5 2 … … N-1 N сравниваются пары A[N-1] и A[N], A[N-2] и A[N-1] … A[1] и A[2] A[j] и A[j+1] 2-ой проход A[1] уже на своем месте! ! for j:=N-1 downto 2 do if A[j] > A[j+1] then begin c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c; end; for j:=N-1 downto 2 do if A[j] > A[j+1] then begin c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c; end; 2 for j:=N-1 downto 1 do if A[j] > A[j+1] then begin c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c; end; for j:=N-1 downto 1 do if A[j] > A[j+1] then begin c:=A[j]; A[j]:=A[j+1]; A[j+1]:=c; end; 1 i -ый проход for j:=N-1 downto i do... for j:=N-1 downto i do... i 1 5 … … N-1 N

Программа program qq; const N = 10; var A: array[1..N] of integer; i, j, c: integer; begin { заполнить массив } { вывести исходный массив } { вывести полученный массив } end; for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; Почему цикл по i до N-1 ? ? i элементы выше A[i] уже поставлены

Метод пузырька с флажком Идея – если при выполнении метода пузырька не было обменов, массив уже отсортирован и остальные проходы не нужны. Реализация: переменная-флаг, показывающая, был ли обмен; если она равна False, то выход. repeat flag := False; { сбросить флаг } for j:=N-1 downto 1 do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; flag := True; { поднять флаг } end; until not flag; { выход при flag=False } repeat flag := False; { сбросить флаг } for j:=N-1 downto 1 do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; flag := True; { поднять флаг } end; until not flag; { выход при flag=False } flag := False; flag := True; not flag; var flag: boolean; Как улучшить? ?

Метод пузырька с флажком i := 0; repeat i := i + 1; flag := False; { сбросить флаг } for j:=N-1 downto 1 do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; flag := True; { поднять флаг } end; until not flag; { выход при flag=False } i := 0; repeat i := i + 1; flag := False; { сбросить флаг } for j:=N-1 downto 1 do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; flag := True; { поднять флаг } end; until not flag; { выход при flag=False } i := 0; i i := i + 1;

Метод выбора Идея: найти минимальный элемент и поставить на первое место (поменять местами с A[1] ) из оставшихся найти минимальный элемент и поставить на второе место (поменять местами с A[2] ), и т.д

Метод выбора for i := 1 to N-1 do begin nMin = i ; for j:= i+1 to N do if A[j] < A[nMin] then nMin:=j; if nMin <> i then begin c:=A[i]; A[i]:=A[nMin]; A[nMin]:=c; end; N-1 N нужно N-1 проходов поиск минимального от A[i] до A[N] если нужно, переставляем Можно ли убрать if ? ? i+1 i

Задания «А": Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре. Пример: Исходный массив: Результат: «Б": Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать первую половину по возрастанию, а вторую – по убыванию. Пример: Исходный массив: Результат:

Задания «А": Написать программу, которая сортирует массив ПО УБЫВАНИЮ и ищет в нем элемент, равный X (это число вводится с клавиатуры). Использовать двоичный поиск. «Б": Написать программу, которая считает среднее число шагов в двоичном поиске для массива из 32 элементов в интервале [0,100]. Для поиска использовать 1000 случайных чисел в этом же интервале.

Двумерные массивы - матрицы Матрица – это прямоугольная таблица чисел. Матрица – это массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца) A строка 2 столбец 3 ячейка A[3,4]

Матрицы Задача: запомнить положение фигур на шахматной доске abcdefgh c6 A[6,3]

Матрицы Объявление: const N = 3; M = 4; var A: array[1..N,1..M] of integer; B: array[-3..0,-8..M] of integer; Q: array['a'..'d',False..True] of real; const N = 3; M = 4; var A: array[1..N,1..M] of integer; B: array[-3..0,-8..M] of integer; Q: array['a'..'d',False..True] of real; Ввод с клавиатуры: for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); read ( A[i,j] ); end; for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); read ( A[i,j] ); end; Если переставить циклы? ? A[1,1]=25 A[1,2]=14 A[1,3]=14... A[3,4]=54 i i j j for j:=1 to M do for i:=1 to N do begin

Матрицы Заполнение случайными числами for i:=1 to N do for j:=1 to M do A[i,j] := random(25) - 10; for i:=1 to N do for j:=1 to M do A[i,j] := random(25) - 10; Какой интервал? ? цикл по строкам цикл по столбцам Вывод на экран for i:=1 to N do begin writeln; end; for i:=1 to N do begin writeln; end; перейти на новую строку for j:=1 to M do write ( A[i,j]:5 ); for j:=1 to M do write ( A[i,j]:5 ); вывод строки Если переставить циклы? ? в той же строке

Обработка всех элементов матрицы Задача: заполнить матрицу из 3 строк и 4 столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы. program qq; const N = 3; M = 4; var A: array[1..N,1..M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S := 0; writeln('Сумма элементов матрицы ', S); end; program qq; const N = 3; M = 4; var A: array[1..N,1..M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S := 0; writeln('Сумма элементов матрицы ', S); end; for i:=1 to N do for j:=1 to M do S := S + A[i,j]; for i:=1 to N do for j:=1 to M do S := S + A[i,j];

Задания Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале [-10,10] и вывести ее на экран. «А»: Найти минимальный и максимальный элементы в матрице их номера. Формат вывода: Минимальный элемент A[3,4]=-6 Максимальный элемент A[2,2]=10 «Б»: Вывести на экран строку, сумма элементов которой максимальна. Формат вывода: Строка 2:

Операции с матрицами Задача 1. Вывести на экран главную диагональ квадратной матрицы из N строк и N столбцов. A[1,N] A[2,2] A[3,3] A[N,N] for i:=1 to N do write ( A[i,i]:5 ); for i:=1 to N do write ( A[i,i]:5 ); Задача 2. Вывести на экран вторую диагональ. A[N,1] A[N-1,2] A[2,N-1] for i:=1 to N do write ( A[i, ]:5 ); for i:=1 to N do write ( A[i, ]:5 ); N+1-i сумма номеров строки и столбца N+1 A[1,1]

Операции с матрицами Задача 3. Найти сумму элементов, стоящих на главной диагонали и ниже ее. Одиночный цикл или вложенный? ? строка 1: A[1,1] строка 2: A[2,1]+A[2,2]... строка N: A[N,1]+A[N,2]+...+A[N,N] S := 0; for i:= 1 to N do S := 0; for i:= 1 to N do цикл по всем строкам for j:= 1 to i do S := S + A[i,j]; for j:= 1 to i do S := S + A[i,j]; складываем нужные элементы строки i

Операции с матрицами Задача 4. Перестановка строк или столбцов. В матрице из N строк и M столбцов переставить 2-ую и 4-ую строки j A[2,j] A[4,j] for j:=1 to M do begin c := A[2,j]; A[2,j] := A[4,j]; A[4,j] := c; end; for j:=1 to M do begin c := A[2,j]; A[2,j] := A[4,j]; A[4,j] := c; end; Задача 5. К третьему столбцу добавить шестой. for i:=1 to N do A[i,3] := A[i,3] + A[i,6]; for i:=1 to N do A[i,3] := A[i,3] + A[i,6];

Задания Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [-10,10] и вывести ее на экран. Обнулить элементы, отмеченные зеленым фоном, и вывести полученную матрицу на экран. "4": "5":

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

Реверс массива Задача: переставить элементы массива в обратном порядке. Алгоритм: поменять местами A[1] и A[N], A[2] и A[N-1], … Псевдокод: 35…97 79…53 12…N-1N 12… N for i:=1 to N do { поменять местами A[i] и A[N+1-i] } for i:=1 to N do { поменять местами A[i] и A[N+1-i] } сумма индексов N+1 Что неверно? ? N div 2 do

Как переставить элементы? Задача: поменять местами содержимое двух чашек. Задача: поменять местами содержимое двух ячеек памяти ? ? x y c c := x; x := y; y := c; c := x; x := y; y := c; x := y; y := x; x := y; y := x; Можно ли обойтись без c ? ?

Программа program qq; const N = 10; var A: array[1..N] of integer; i, c: integer; begin { заполнить массив } { вывести исходный массив } { вывести полученный массив } end; program qq; const N = 10; var A: array[1..N] of integer; i, c: integer; begin { заполнить массив } { вывести исходный массив } { вывести полученный массив } end; for i:=1 to N div 2 do begin c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c; end; for i:=1 to N div 2 do begin c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c; end;

Задания «А": Заполнить массив из 10 элементов случайными числами в интервале [ ] и выполнить инверсию отдельно для 1-ой и 2-ой половин массива. Пример: Исходный массив: Результат: «Б": Заполнить массив из 12 элементов случайными числами в интервале [ ] и выполнить инверсию для каждой трети массива. Пример: Исходный массив: Результат:

Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего. Алгоритм: A[1]:=A[2]; A[2]:=A[3];… A[N-1]:=A[N]; Цикл: 3581… …N-1N 581…973 for i:=1 to N-1 do A[i]:=A[i+1]; for i:=1 to N-1 do A[i]:=A[i+1]; Что неверно? ? почему не N ?

Программа program qq; const N = 10; var A: array[1..N] of integer; i, c: integer; begin { заполнить массив } { вывести исходный массив } { вывести полученный массив } end; program qq; const N = 10; var A: array[1..N] of integer; i, c: integer; begin { заполнить массив } { вывести исходный массив } { вывести полученный массив } end; c := A[1]; for i:=1 to N-1 do A[i]:=A[i+1]; A[N] := c; c := A[1]; for i:=1 to N-1 do A[i]:=A[i+1]; A[N] := c;

Задания «А": Заполнить массив из 10 элементов случайными числами в интервале [ ] и выполнить циклический сдвиг ВПРАВО. Пример: Исходный массив: Результат: «Б": Заполнить массив из 12 элементов случайными числами в интервале [ ] и выполнить циклический сдвиг ВПРАВО на 4 элемента. Пример: Исходный массив: Результат:

1. Создайте двумерный массив вещественных чисел, имеющий 10 строк и 15 столбцов, выведите его на экран. Затем разделите каждый элемент массива на среднее арифметическое значение элементов строки, в которой они расположены, и результат выведите на экран. 2. Создайте матрицу из 15 строк и 15 столбцов. Вычислите произведение суммы элементов главной диагонали на сумму элементов L-й строки. 3. Объедините две линейные таблицы A и В в новую таблицу С, поставив элементы таблицы A на нечетные места, а элементы таблицы В на четные. 4. В линейном массиве найдите максимальный элемент. Вставьте порядковый номер максимального элемента за ним, передвинув все оставшиеся элементы на одну позицию вправо. 5. В линейном массиве найдите индексы тех двух элементов, сумма которых максимальна среди сумм всевозможных пар. Удалите все элементы массива, предшествующие тому элементу, индекс которого является наибольшим из двух найденных. Преобразованный массив выведите на экран. 6. В квадратной таблице поменяйте местами элементы строки и столбца, на пересечении которых находится минимальный из положительных элементов. 7. Наименьший элемент каждой строки прямоугольной таблицы, начиная со второй, замените наибольшим элементом предшествующей строки.

1. Составить программу, которая меняет местами элементы массива с четными и нечетными номерами, т. е. нулевой и первый, второй и третий и т. д. 2. Переставьте элементы массива в обратном порядке. Указание. Пусть N последний индекс элементов массива. Тогда нужно обменять значения элементов с индексами О и N, 1 и N-1, 2 и N-2 и т.д. 3. Требуется циклически сдвинуть массив на один шаг вправо, т. е. элемент с индексом I заменить на элемент с индексом I-1, а элемент с индексом 0 заменить на последний элемент массива. Например, из массива 2, 3, 5, 8 должен получиться массив 8, 2, 3, 5. Указание. Нужно запомнить во вспомогательной переменной последний элемент массива, а затем в цикле от конца к началу выполнить присваивание М(I) = М(I-1). После этого запомненный последний элемент записать в М(0). 4. Составьте программу, которая сортирует массив по убыванию его элементов от начала к концу. 5. Создать массив из 5-ти фамилий и найти самую длинную. 6. Имеются следующие сведения об абитуриентах: номер в списке, Ф. И. О., сумма набранных баллов на вступительных экзаменах. Требуется напечатать список абитуриентов в порядке убывания сумм набранных баллов.

1. В двумерном массиве произвольных чисел вычислить суммы элементов столбцов. 2. В каждой строке двумерного массива, состоящего из произвольных чисел, вычислить количество, сумму и среднее арифметическое отрицательных элементов. 3. В двумерном массиве А(4,4) произвольных чисел вычислить сумму элементов, сумма индексов которых равна В двумерном массиве произвольных чисел А(10,10) найти наибольший элемент главной диагонали и наибольший элемент побочной диагонали. 5. В двумерном массиве произвольных чисел В(4,7) взаимно поменять местами 2-й и 5-й столбцы. Вывести исходный массив и массив, полученный после перестановок. 6. В двумерном массиве произвольных чисел А(4,7) определить номера столбцов, в которых среднее арифметическое его элементов меньше, чем среднее арифметическое элементов массива. 7. Найти мах элемент прямоугольной таблицы А(5,5). 8. Перевернуть исходную таблицу 6Х6 относительно ее главной диагонали.