Умова: Скласти програму, яка б допомогла працівникам ДАІ визначати кількість порушників перевищення швидкості на трасі, якщо відомо, що на даному проміжку траси встановлено обмеження на швидкість Vmax, a прилад фіксує швидкість автомобілів V1 V2,..., Vn.
Розв 'язання: В даній задачі ніяким чином не обумовлена умова виходу з циклу, тому є пропозиція: процес підрахування порушників необхідно закінчити тоді, коли чергове введене число буде недодатнім (дійсно, з від'ємною або нульовою швидкістю автомобіль рухатися не може). Для тимчасового зберігання значення швидкості чергового автомобіля ми будемо знову використовувати одну змінну. Програма, що виконує задані обчислення, має наступний вигляд:
Program Example_231;
Uses crt;
Var V,Vmax:real; {V - швидкість автомобіля, Vmax - максимально дозволена швидкість}
Count:longint; {Count - кількість порушників}
Begin
Clrscr;
Count:=0; {На початку роботи порушники відсутні}
Write('Значення максимально дозволеної, швидкості: ');
Readln(Vmax);
Vmax:=abs (Vmax) ; {Знаходження модуля для виключення помилки введення від'ємної максимальної швидкості}
Repeat
Write('Значення швидкості чергового автомобіля: ');
Readln(V);
If V>Vmax then Count:=Count+1;
Until V<=0;
Writeln('Кількість порушників ',Count);
Readkey;
End.
ЗАДАЧА №251
Умова: Дано натуральне число п і дійсні числа а1 а2, .... ап. Відомо, що в заданій послідовності є хоча б одне нульове значення. Розглядаючи члени послідовності, що розташовані до першого нульового члена, визначити середнє арифметичне членів.
Розв 'язання:Для розв'язку цієї задачі значення п є зайвим, якщо серед членів послідовності буде хоча б один нульовий елемент, тому ми враховувати цю змінну не будемо (хоча дітям можна пояснити, що у випадку відсутності нульового члена послідовності змінна п може використовуватись як додаткова для виходу з циклу, щоб виключити зациклення програми).
Отже, оскільки ми не знаємо, коли зустрінеться нульовий елемент, у програмі знаходиться сума всіх чисел послідовності (змінна sum) та кількість введених чисел (змінна count), а після виходу з циклу вже знаходиться безпосередньо середнє арифметичне членів послідовності як результат ділення суми на кількість чисел, зменшену на одиницю. Зменшення на одиницю відбувається тому, що фактично в тілі циклу буде підраховано один зайвий нульовий елемент (останній).
Програма має вигляд
Program Example_251_5;
Uses crt;
Var count:word; {count - кількість членів послідовності до першого нульового елемента}
a,Sum:real; {a - черговий член послідовності. Sum - сума членів послідовності до першого «0»}
SA:real; {SA - середнє арифметичне}
Begin
Clrscr;
Sum:=0;
count:=0; {Початкові значення дорівнюють «0»}
Repeat
write('Введіть черговий член послідовності: ') ;
readln(a);
Sum:=Sum+a;
count:=count+1;
until a=0;
SA:=Sum/(count-1);
Writeln('Середнє арифметичне = ',SA:8:2);
Readkey;
End.
Домашнє завдання:
• Повторити теоретичний матеріал із роботи циклу з післяумовою;