Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка з програмування (школа).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.36 Mб
Скачать

Задача № 312

Умова: Дано дійсні числаа1951, а1952,..., а2000—кількість опадів (у мм), що випали у місті за останні 50 років століття. Обчислити середню кількість опадів за цей період і щорічне відхилення від середнього значення.

Розв'язання: У цій задачі слід організовувати проходження по масиву двічі, оскільки першим проходженням ми знайдемо тільки суму всіх опадів, що випали за останні 50 років, а потім, поділивши отриманий результат на 50, знайдемо середню кількість опадів за вказаний період. Другим же проходженням можемо вже визначити щорічне відхилення від середнього значення, причому для того, щоб не втратити вхідні дані, зарезервуємо в програмі ще один масив на 50 дійсних чисел для зберігання цих результатів.

Program Example_312;

Uses crt;

Var n,I:longint; {n — кількість елементів масиву, і — змінна циклу}

А:аггау[1951..2000] of real; {A - масив для зберігання кількості опадів у відповідному році}

В:array[1951..2000] of real; {В — масив для зберігання відхилення від середнього значення}

Begin

Randomize;

Clrscr;

Sum:=0;

For і:=1951 to 2000 do

Begin

A[i] :=random(500) /7 ; {Заповнення масиву випадковими дійсними числами}

Write (А[і] :8:2) ; {Виведення масиву на екран для контролю}

Sum:=Sum+K[і];

End;

Sum:=Sum/50; {Середня кількість опадів за рік}

Writeln; WriteIn('Щорічні відхилення від середньої кількості опадів за період 1951 - 2000 p.p.');

For і:=1951 to 2000 do

Begin

В[і]:=Sum — А[і]; {Знаходження щорічного відхилення}

Write(В[і]:8:2); {Виведення результатів на екран}

End;

Readkey;

End.

Задача №318 (4)

Умова: Дано дійсні числа а1 а2,..., a30 b1 b2,..., b30. Обчислити

Розв 'язання: Очевидно, що для обчислення результату цієї задачі спочатку необхідно знайти чисельник та знаменник дробу. Причому звернітьувагу на те, що кількість доданків і в одному, і в другому випадкахдорівнює 15, тільки в чисельнику вибираються елементи масивів з непарними індексами, а в знаменнику — із парними. Щоб організуватизміну індексів за заданим законом, можна скористатися таким штучнимприйомом: якщо в циклі з параметром індекс і змінюється від 1 до п, тодля отримання непарних чисел з проміжку [1..2п] використовуєтьсяформула: 2*і - 1.

Запропонуйте дітям подумати, яка формула дасть змогу отримати парні числа (2*і). Використовуючи ці співвідношення, програма для розв'язку цієї задачі має вигляд:

Program Example_318_4;

Uses crt;

Var a,b:array[l..30] of real;

{А,В — масиви для зберігання вхідних даних}

і:byte; {і — змінна циклу}

Rl,R2:real; {R1 — чисельник дробу, R2 - знаменних дробу}

Rez:real; {Rez - результат обчислень}

Begin

Randomize;

Clrscr;

Writeln('Масив А:');

For i:=1 to 30 do

Begin

A[i]:=random(200)/7-random*15; Write(A[i]:8:2);

End;

Writeln;

Writeln('Масив В:');

For i:=1 to 30 do

Begin

B[i]:=random*200-random*100; Write(B[i]:8:2);

End;

Writeln;

Rl:=0; R2:=0; {Початкові значення дорівнюють 0, тому що результат є накопиченням суми}

For і:«і to 15 do

Begin

R1 := R1+(A[2*i-1]+B[2*i-1]) ; R2 := R2+(A[2*i]+B[2*i]) ;

End;

Rez:=Rl/R2;

Writeln('Результат обчислень = ',Rez:8:2);

Readkey;

End.

Домашнє завдання

•Задачі№ 301,303,313,315(2,3), 318(2,5).

УРОК 24. Двовимірні таблиці

Мета уроку: Дати поняття двовимірних таблиць. Навчити розв'язувати типові задачі з обробки двовимірних таблиць.

Двовимірний масив — це масив, де кожному елементу ставиться у відповідність два індекси.

Напрямок зміни другого індексу —>

1

2

3

I

m

1

2

3

n

Напрямок

зміни першого

індексу

Для початку роботи з масивом готуємо місце в пам'яті.

Для цього описуємо його в розділі оголошень, використовуючи зарезервоване слово Array, після якого в квадратних дужках вказуємо розмірність масиву, причому враховуємо, що на першому місці вказуються індекси рядків, а на другому - стовпчиків, і обов'язково — тип елементів.

Опис двовимірного масиву:

var

<Ім'я_масиву>: array[<поч_інд_рядкiв>..<кін_інд_рядків>,

<поч_інд_ставп>. .<кін_інд_стовп>] of <базовий_тип_елементів>;

Приклад опису:

Const n:=100; m:=100; Var A:array[1..n,1..m] of real;

D:array[l..10,1.100] of integer;

Зверніть увагу на те, що значень у рядках або стовпчиках масиву не обов'язково буде стільки, скільки ми оголосили, але не більше!

Звертання до елементу двовимірного масиву: їм'я_масиву[<індекс_рядка>, <хнд_стовпчика>]

Заповнення масиву:

  • з клавіатури:

for i:=1 to n do

for j:=1 to m do

begin

write ('введіть A['i,',',j,']: ') ;

readln(A[i,j])

end;

  • за формулою:

for і:=1 to n do

for j:=1 to m do

A[i,j]:=i*i-10 {або будь-яка інша формула};

  • випадковим чином із проміжку [K,L]:

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(L-K)+K;

Виведення двовимірного масиву на екран

for і:=1 to n do

begin

for j:=1 to m do write(A[i,j]:8); {виведення в рядок}

writeln; {перехід на новий рядок}

end;

Виведення в рядку необхідно обов'язково форматувати, щоб не трапилося «злипання» елементів (дивись приклад вище).

Як уже було зазначено, для роботи з масивом потрібен будь-який оператор повторення. Очевидно, що у двовимірному масиві необхідно використовувати два оператори повторення: один цикл, внутрішній, потрібен для переходу між елементами рядка (тобто, по стовпчиках), а другий, зовнішній, — для переміщення між рядками. Якщо в матриці кількість рядків і стовпчиків однакова, то таку матрицю називають квадратною (на відміну від звичайної прямокутної таблиці). Тільки в квадратних матрицях існують головна та бічна діагоналі (дивись малюнок):

Елементи, що стоять на головній діагоналі, мають індекси (1, 1), (2, 2), (З, 3), ... (і, і). ..., (п, n), тобто номер рядка дорівнює номеру стовпчика. Елементи, що стоять на бічній діагоналі, мають такі індекси (1, n), (2, п -1), (З, п - 2),..., (і, п + 1 - 0, (п, 1), тобто індекси елементів взаємозалежні за формулою j- п +1 - і.

Далі рекомендується розглянути методи розв'язання деяких типових задач з обробки двовимірних таблиць.