Оскільки алгоритм висновку матриці структурно нічим не відрізняється від алгоритму її введення (див. Відповідні блок-схеми в дод. 1), тоді оформлення процедури майже однаково. Зверніть, будь ласка, увага на те, що масив А - тепер параметр вхідної ( тобто відомий), тому ключове слово Var відсутнє. У подвійному циклі for реалізований порядковий висновок на екран вихідної матриці. У форматі висновку під виведене значення елементів матриці приділяється 7 позицій, у тому числі дві позиції для висновку дробової частини:
Write(A[i,j]:7:2,’ ‘).
Наступний оператор висновку без параметрів Writeln дозволяє закінчити висновок одного рядка матриці і перейти на наступну.
Опис процедури Evaluate.
¨ У заголовку процедури описані параметри: K, A як вхідні параметри.
¨ Описано локальні змінні i (лічильник числа рядків), j (лічильник числа стовпців) як integer і stolb (речовинний масив довжиною N - array [1..N] of Real), s r (робоча змінна типу Real для підрахунку суми елементів у даному стовпці).
¨ У подвійному циклі for знаходиться середнє арифметичне значення для кожного стовпця і зберігається в одномірному масиві Stolb:
|
|
1) цикл починається по стовпцях j від 1 до k;
2) потім у циклі по рядках i вважається сума елементів у даному стовпці sr;
3) і обчислюється середнє арифметичне значення для кожного стовпця шляхом розподілу обчисленої суми на кількість рядків Stolb[j]:=sr/k.
¨ Значення елементів одномірного масиву середнього арифметичного значення стовпців Stolb[j] у циклі for виводиться на екран.
Зауваження. Середні арифметичні значення кожного зі стовпців матриці можна обчислювати і відразу виводити на екран. Цей варіант придатний тільки тоді, коли значення середніх арифметичних більше ні для чого НЕ потрібні (як у нашому випадку). Тоді потреба в масиві Stolb і додатковому циклі for відпадає. У цьому випадку підпрограма Evaluate буде мати наступний вид:
Procedure Evaluate(k:integer; A:arrayA);
Var i,j:integer;
sr:real;
Begin
Writeln('-і-і-і- Середнє арифметичне кожного зі стовпців -і-і-і-');
for j:=1 to k do {-і-і-і- цикл по стовпцях -і-і-і- }
Begin
sr:=0;
for i:=1 to k do {------- цикл по рядках ------- }
sr:=sr+A[i,j]; {обчислення суми елементів по стовпцях
матриці A }
Writeln ('Стовпець [',j,']= ', sr/k:7:2);
End;
End;
Опис головної програми
· У тілі головної програми в циклі Repeat... Until очищається екран (ClrScr).
· Шляхом виклику процедури Input(k) вводиться значення k - фактичне число рядків і стовпців вихідної матриці A.
· Шляхом виклику процедури InputMatrix(k,A) вводимо значення елементів вихідної матриці А.
· Знову очищаємо екран (ClrScr).
· Через виклик процедури OutputMatrix(k,A) виводимо на екран значення елементів вихідної матриці А.
· Через виклик процедури Evaluate(k,A) визначаємо значення середніх арифметичних кожного зі стовпців і виводимо їхній на екран.
|
|
· Потім випливає запитання «Знову? (Y/N)».
Змінній ch присвоюється значення натиснутої клавіші ch:=ReadKey і в залежності від відповіді керування чи передається на початок циклу (ch:=’Y’) для повторного рахунка, але вже з іншими вихідними даними, чи програма закінчує виконання (ch:= ‘N’).