Мета уроку:навчити розв'язувати типові задачі з обробки лінійних таблиць.
На початку уроку бажано зробити опитування за матеріалом попереднього уроку та повторити тему «Команда повторення», особливо різновид циклу — цикл з параметром. Далі рекомендується розглянути методирозв 'язування типових задач з обробки лінійних таблиць. Зверніть увагу на те, що дуже велика кількість задач з обробки масивів потребує виконання однотипних дій з усіма елементами, тому зручно в цих випадках використовувати цикл із параметром для організації повторення.
ЗАДАЧА № 300
Умова: Барон Мюнхгаузен, вийшовши на екологічно чисте полювання, зарядив свою рушницю кісточками вишень. Після того, як він вдало влучив поміж роги оленям (в яких влучило відповідно k1, k2,-.;kNкісточок), у них на головах виросли чудові молоді вишеньки. Скільки саджанців зміг подарувати барон Мюнхгаузен садівникам-дослідникам?
Розв'язання: Для розв'язування цієї задачі пропонується використати масив для зберігання кількості кісточок, що влучили поміж роги оленям. Оскільки кількість кісточок є цілим числом, масив повинен мати розмірність N елементів цілого типу. Для спрощення відлагодження програми доречно використовувати автоматичне заповнення масиву за допомогою генератора випадкових чисел, а з метою перевірки правильності роботи програми після заповнення масив виводиться на екран. Програма, що реалізує розв'язання цієї задачі, має такий вигляд:
Program Ехашр1е_300;
Uses crt;
Var N:word;
К:array[1..100] of longint;
{K — зарезервований масив для зберігання кількості кісточок, що влучили в оленів}
і,Sum:longint; {і — змінна циклу, Sum — загальна кількість кісточок, що влучили в оленів}
Begin
Randomize;
{Ця процедура запускається з метою зробити числа генератора випадкових чисел ще більш «випадковими»}
Clrscr;
Sum:=0; {Спочатку Мюнхгаузен ще ні в кого не влучив}
Write('Олені, в яких влучив Мюнхгаузен (<=100): ');
Readln(N);
For і:=1 to N do
Begin
К[і]:=random(5 0)+2 0; {Заповнення масиву випадковими числами в діапазоні від 20 до 70}
Write(К[і]:5); {Виведення на екран для контролю}
Sum: =Sum+K [і] ; {Знаходження кількості влучених кісточок}
End;
Writeln; {Переведення курсору на новий рядок}
Writeln('Кількість нових саджанців ',Sum);
Readkey; {Затримка зображення на екрані}
End.
ЗАДАЧА № 309
Умова: Дано натуральне число А. Складіть програму, що представляє його у вигляді многочлена. Наприклад,
123 = 1 * 102 + 2* 101 + 3*10°.
Розв 'язання. Ця задача фактично зводиться до пошуку окремих цифр числа. Оскільки ми не знаємо на початку роботи, скільки цифр має число, для їх зберігання можна використати масив цілих чисел, причому розмірність цього масиву можна задати не більше 10 елементів, тому що навіть найбільше ціле число типу longintмає в своєму складі не більше 10 цифр. Щоб вивести на екран отриманий многочлен, ми спочатку знаходимо кількість цифр у числі та виділяємо кожну цифру окремо, а потім організовуємо цикл від «найстаршої» значущої (ненульової) цифри числа до «наймолодшої» з виведенням на екран самої цифри, помноженої на 10 у степені номер розряду - 1 (тобто i-1).
Програма, що реалізує описаний алгоритм, має вигляд:
Program Example_309;
Uses crt;
Var N,і,Count:longint; {N — задане ціле число, і — змінна циклу. Count — кількість цифр в числі}
Cifra:array[1. .10] of byte; {Cifra — масив для зберігання цифр числа}
Begin
Clrscr;
Count:=0;
Write('Введіть ціле число: ');
Readln(N);
While N>0 do
Begin
Count:=Count+l; Cifra[Count]:=N mod 10; N:=N div 10;