Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гос по инф. для математиков (ответы).doc
Скачиваний:
1
Добавлен:
21.07.2019
Размер:
93.18 Кб
Скачать

3) Визначеність кількості кроків

4) все перелічене.

Питання Групи В (1 завдання – 5 балів; 5*4 = 20 балів)

  1. Яку задачу розв’язує наступна програма:

program GOS;

var

a : array[1..10, 1..10] of integer;

i, j n_max, n_min : of byte;

max, min, tmp : integer;

begin

ClrScr;

Write(‘input n : ’);

Read(n);

for i:=1 to n do

for j:=1 to n do begin

Write(‘input a[’, i, ‘,’, j, ‘]= ’);

Read(a[i,j]);

end;

max:=a[1,1];

n_max:=1;

min:=a[1,1];

n_min:=1;

for i:=1 to n do

for j:=1 to n do

if a[i,j]>max then begin

max:=a[i,j];

n_max:=i

end

else

if a[i,j]<min then begin

min:=a[i,j];

n_min:=i

end;

for i:=1 to n do begin

tmp:=a[n_max,i];

a[n_max,i]:=a[n_min,i];

a[n_min,i]:=tmp;

end;

end.

{Міняє рядки матриці, в яких знаходяться мінімальний та максимальний елементи матриці}

  1. Якого значення набуде змінна s після виконання фрагменту програми :

а) s:=0; i:=0;

while i<5 do i:=i+1; s:=s+1/i;

Відповідь: 1/5.

б) s:=0; n:=5;

for i:=1 downto n do s:=s+1/i;

Відповідь: 0.

в) s:=0; i:=1;

while i>1 do begin s:=s+1/i; i:=i-1 end;

Відповідь: 0.

г) s:=0; i:=1;

repeat s:=s+1/i; i:=i-1 until i<=1;

Відповідь: 1.

д) s:=1; n:=1;

for i:=2 to n do s:=s+1/i;

Відповідь: 1.

  1. Чи є правильними наступні оператори присвоювання? Відповідь обґрунтувати.

а) k:=k mod 3 + k*Cos(0);

Ні, неправильні, оскільки операція mod властива тільки для цілих чисел, а операція Cos(0) – її результат є дійсним (оскільки Cos(0) = 1,0)

б) x:=x*2 div 6 + x/4;

Тут ситуація аналогічна, оскільки х з першого доданку повинно бути цілим, а операція «/» застосовна для дійсних чисел. Отже, даний оператор присвоювання також є неправильним.

  1. Визначити яке значення одержить змінна f в результаті виконання послідовності дій:

f:= false;

for i:=1 to 5 do begin

if a<0 then

f:=true;

a:=a-1

end;

для таких початкових значень змінної a:

1) 10 false 2) 5 false 3) -10 true 4) 4 false

Питання Групи С (1 завдання – 20 балів; 20*2 = 40 балів)

  1. Вимагалося написати програму, яка у масив B записує елементи масиву A, які не дорівнюють значенню максимального елементу масиву A. Програміст поквапився і написав програму:

program c_1;

const

n=20;

var

a, b : array[1..n]of real;

n : byte;

i, j : byte;

max : real;

begin

for i:=1 to n do begin

Write(‘input a[’, i, ‘] = ’);

Read(a[i]);

end;

max:=a[1];

for i:=1 to n do

if a[i]>max then

max:=a[i];

for i:=1 to n do

if a[i]<max then

Write(a[i]:5:2);

end.

Треба послідовно виконати три завдання:

а) Наведіть приклад вхідних даних, при яких після виконання програми на екран не буде виведено ніяких результатів:

можна ввести однакові 20 елементів в програму, все вони будуть максимумами, а отже інших елементів, крім максимуму не буде!

___________________________________________________________________________

б) Вкажіть, яка ще помилка є у програмі:

Змінну n потрібно викинути з розділу var, оскільки вона описана як константа, змінна j зайва, немає запишу елементів у масив В так, як сказано в умові.

в) Напишіть правильний варіант програми:

program c_1;

const

n=20;

var

a, b : array[1..n]of real;

i, k : byte;

max : real;

begin

for i:=1 to n do begin

Write(‘input a[’, i, ‘] = ’,i);

Read(a[i]);

end;

max:=a[1];

for i:=1 to n do

if a[i]>max then

max:=a[i];

k:=0;

for i:=1 to n do

if a[i]<max then begin

inc(k);

b[k]:=a[i];

end;

for i:=1 to k do

Write(b[i]:5:2);

end.

    1. Побудувати у вигляді блок-схеми алгоритм розв’язування наступної задачі і написати програму:

Дані дійсні числа x1, y1, x2, y2,…, x10, y10. Знайти периметр десятикутника, вершини котрого мають відповідно координати (x1y1), (x2y2), …, (x10y10). (Означити процедуру (або функцію) обчислення відстані між двома точками, що задані своїми координатами.)

program z1;

uses crt;

const n = 10;

var x, y: array [1..n] of real;

i : integer;

s : real;

function dlinna (x1 :real; y1 :real; x2 :real; y2 :real): real;

begin

dlinna := sqrt(sqr(x2-x1)+sqr(y2-y1));

end;

begin clrscr;

for i:=1 to n do begin

write('Input x[',i,'] = '); read(x[i]);

write('Input y[',i,'] = '); read(y[i]);

end;

for i:=1 to n-1 do begin

s := s + dlinna (x[i], y[i], x[i+1], y[i+1]);

end;

s := s + dlinna (x[1], y[1], x[n], y[n]);

write('Периметр многоугольника равен',s:6:2);end.

n:=10;

dlinna(X[i],y[i], X[i+1],y[i+1])

s:=s+ dlinna(X[i],y[i], X[i+1],y[i+1]);

dlinna(X[1],y[1],X[10],y[10])

s:=s+ dlinna(X[1],y[1],X[10],y[10]);

Блок-схема для функції визначення довжини сторони многокутника:

dlinna := sqrt(sqr(x2-x1)+sqr(y2-y1));