Readln(N);
For i:=1 to N do
Begin
A[i]:=random(300)-150;
{Заповнення масиву випадковими числами від -150 до +150}
Write(А[і]:5) ;
{Виведення масиву на екран для контролю роботи програми}
if (A[i]<0) and (abs(A[i])>H) then Count_Boy: =Count_Boy+1;
if (A[i]>0) and (A[i]+10>H) then Count_Girl: =Count_Girl+1;
End;
Write(‘хлопчики, яких видно з-за паркану ‘,Count_Boy);
Write(‘дівчатка, яких видно з-за паркану ‘ ,Count_girl);
Readkey; {Затримка зображення на екрані}
End.
ЗАДАЧА №314(2)
Умова : Дано натуральне число п та послідовність дійсних чисел а 1 а 2 ...а п . Визначити кількість сусідств двох чисел різного знаку.
Розв ‘язання : Перш за все запропонуємо в цій задачі інший метод опису масиву з використанням константи, що задає розмір масиву, та вказівки Туре . А, по-друге, зверніть увагу, що для визначення двох сусідніх елементів масиву використовується загальний опис індексів і та і + 1 (можна і — 1 та і), а це при організації циклу можне викликати ситуацію виходу за межі масиву. Дійсно, якщо організувати цикл з параметром для зміни індексу від 1 до N , де N — кількість елементів масиву, то при і = N значення і + 1 буде виходити за межі масиву. Це є помилкою, що призводить до неочі-куваних результатів, тому цикл треба організовувати для зміни індексу не від 1 до N , а для зміни від 1 до N - 1.
Program Example_314_2;
Uses crt;
Const N=100;
Type Masiv = array[1..N] of real;
Var A:Masiv; {A — масив для зберігання даних чисел}
і,count:byte; {і — змінна циклу, count — кількість сусідств}
Begin
Randomize;
Clrscr;
count:=0;
For і:=1 to N do
Begin
A[i]:=random*100-random*50;
{Заповнення масиву випадковими дійсними числами}
Write(А[і]:8:2);
End;
For i:=l to N-l do
If ((A[i]<0) and (A[i+1]>0)) or ((A[i]>0) and (A[i+1]<0))
then count:=count+l;
Writeln;
Writeln(‘Кількість заданих сусідств ‘,count);
Readkey; {Затримка зображення на екрані}
End.
ЗАДАЧА № 321 (1,2)
Умова: Дано одновимірний масив цілих чисел A [ i ], де i = 1, 2, ..., п. Визначити, скільки разів максимальний елемент зустрічається у даному масиві та порядковий номер першого найбільшого елементу.
Розв’язання : Для розв’язку цієї задачі спочатку необхідно пройти по всіх елементах масиву і знайти серед них максимальний, запам’ятавши його номер. Для цього користуються стандартним алгоритмом:
1) береться будь-який елемент масиву (як правило, перший) і його значення присвоюється змінній max , тобто він вважається за еталон найбільшого елементу;
2) по черзі з масиву вибираються всі останні елементи і, якщо серед них знайдеться більший за обраний еталон, то змінній maxприсвоюється нове значення, яке тепер буде новим еталоном. В іншій змінній, наприклад, Nmaxзапам’ятовується номер цього найбільшого елементу (початкове значення цієї змінної було 1, тому що спочатку ми вважали найбільшим 1 -ий елемент). Після закінчення перегляду всього масиву змінна maxбуде містити шуканий максимум, а змінна N_max— його номер. Щоб запам’ятати номер першого максимального елемента, необхідно шукати в матриці елемент, що точно більший еталону. Якщо ж ми будемо шукати елемент, що не менший за еталон, то в змінній Nmax залишиться номер останнього найбільшого елементу (подумайте чому).
Після знаходження максимуму другим проходом можна вже підрахувати кількість таких елементів в масиві. Для цього кожен елемент порівнюється з еталоном, що знаходиться в змінній max , та до лічильника countдодається одиниця у випадку співпадання цих значень.
Програма, що реалізує описаний алгоритм, наведена нижче:
Program Example_321_1_2;
Uses crt;
Const n = 30;
Var A:array[1..n] of integer; {A — масив даних чисел}
і:byte; {і — змінна циклу}
count,N_max:byte; {count — кількість максимальних елементів в масиві, Н_тах — номер першого найбільшого елементу}
max:integer; {max — максимальний елемент масиву}
Begin
Clrscr;
Randomize;
For і:=1 to n do
Begin
A[i]:«random(150) - random(80); Write(A[i]:5);
end;
{Надання змінним початкових значень)
Читать дальше