max:=A[l];
N_max:=1;
count:=0;
{Прохід по масиву для пошуку максимуму та його номера}
for і:=2 to n do
if A[i]> max
then begin max:=A[i]; N_max:=i; end;
{Другий прохід по масиву для підрахунку кількості максимальних елементів}
for i:=1 to n do
if A[i]= max then count:=count+1;
Writeln( Максимум = ‘ ,max);
Writeln(‘Номер першого максимума = ‘ ,N_max);
Writeln(‘Кількість максимумів = ‘,count);
Readkey;
End.
ЗАДАЧА № 356
Умова : Дано цілочислову прямокутну таблицю порядку п х т. Усі елементи таблиці, менші за середнє арифметичне її значень, замінити на «-1», а більші — на «1».
Розв ‘язання : Щоб виконати задану заміну, необхідно спочатку обчислити середнє арифметичне елементів таблиці. Для цього знайдемо суму всіх елементів, а потім поділимо на їх кількість (елементів у таблиці всього п х т). Після виконання зазначених обчислень необхідно ще раз організувати прохід по масиву, в результаті якого командою розгалуження вибрати додатні та від’ємні елементи і замінити їх відповідно до умови.
Program Example_356;
Uses crt;
Const n = 9; m = 12;
Type Masiv = array[1..n,l..m] of integer;
Var A:Masiv; i,j:byte; {i,j — змінні циклу}
Sum,SA:real;
{Sum — сума елементів таблиці, SA — середнє арифметичне}
Begin
Randomize;
Clrscr; Sum:=0; {Початкове значення суми}
Writeln(‘Вихідний масив: ‘);
For і: =1 to n do
Begin
For j : =1 to m do
begin
A[i,j]:=random(120)-random(65); Write(A[i,j]:5);
Sum:=Sum+A[і,j]; {Накопичення суми елементів масиву}
end;
writeln;
End;
SA:=Sum/(n*m);
Writeln(‘Середнє арифметичне - ‘,SA:8:2);
Writeln(‘Результуючий масив: ‘);
For i:=1 to n do
Begin
For j:=1 to m do
begin
if A[i,j] < SA then A[i,j]:=-1;
if A[i,j] > SA then A[i,j]:=1;
Write
end;
writeln;
End;
Readkey;
End.
ЗАДАЧА № 358
Умова : У даній дійсній матриці розмірністю 6x9 знайти суму елементів рядка, що містить найбільший елемент. Вважається, що такий елемент у матриці єдиний.
Розв’язання : Щоб знайти суму елементів заданого рядка, спочатку визначимо, в якому з рядків матриці знаходиться максимальний елемент. Після цього ми повинні запам’ятати номер рядка, в якому він знаходиться. Використаємо для цього додаткову змінну N _ max . Після повного проходу по масиву з метою пошуку максимуму, організовуємо новий цикл, але вже не по всьому масиву, а тільки по рядку з номером Njnax для обчислення суми елементів цього рядка. Програма для реалізації описаного алгоритму має наступний вигляд:
Program Example_358;
Uses crt;
Type masiv = array[1..6,1..9] of real;
Var A: Masiv;
i,j:byte; {i,j - змінні циклу}
Sum,max:real;
{Sum — сума елементів таблиці, max — махе. елемент таблиці}
N_max:byte; {Njnax — номер рядка, що містить махс. елемент}
Begin
Randomize;
Clrscr;
Writeln(‘Вихідний масив: ‘);
Fox i:=1 to 6 do
Begin
For j:=1 to 9 do
begin
A[i,j]:=random*12-random(65)/ll; Write(A[i,j]:8:2);
end;
writeln;
End;
{Беремо у якості еталону перший елемент масиву}
mах:=А[1,1];
Nmax:=1; For i:=1 to 6 do
For j:=1 to 9 do
if A[i,j]>max then
Begin max:=A[i,j]; N_max:=i; End;
Writeln(‘Максимальний елемент масиву - ‘,max:8:2);
Sum:=0; {Початкове значення суми}
For j:=1 to n do
Sum: =Sum+A [ N_max, j ] ;
Writeln(*Отримана сума - ‘,Sum:8:2); Readkey;
End.
Домашнє завдання:
• Задачі № 314, № 321, № 350(2), № 353(1), № 355(2), № 360(1), № 361.
УРОК 26. Впорядкування таблиць
Мета уроку: Дати поняття про методи впорядкування табличних величин. Навчити розв’язувати задачі, що потребують сортування.
Теоретичний матеріал
Дуже часто при розв’язуванні задач, пов’язаних з обробкою масивів, необхідно виконувати сортування його елементів за зростанням або спаданням. Такі задачі мають велике практичне значення. Розглянемо деякі з методів, що дають змогу впорядкувати елементи таблиць.
Всі існуючі методи сортування можна поділити на три групи:
• обмінні сортування — виконується обмін між двома (найчастішесусідніми) елементами масивів, якщо відповідні елементи розташовані увихідному масиві невпорядковано; процес повторюється або певну кількість разів, або доки елементи в масиві не стануть впорядкованими;
Читать дальше