Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Програмування.doc
Скачиваний:
7
Добавлен:
19.11.2019
Размер:
742.91 Кб
Скачать

1.4.9. Тестові завдання

Тестові завдання містять короткі пояснення та фрагменти програм. Елементи, яких не вистачає, необхідно дописати. Уважно проаналізуйте текст програм, деякі програми мають заплановані помилки.

  1. Дано ціле число. Зробити число перевертень. Задачу вирішити двома варіантами: тільки з числами і літерними величинами.

Варіант 1.

Var

N:longint;

K,i:integer;

S:real;

A:array[1..10] of integer;

Begin

{блок введення ( приклад: ввели число 123456)}

Writeln('Введіть число');

Read(n);

{цифри числа занесемо в масив А 61 52 43 34 25 16 }

k:=0;

while n>0 do begin

k:=k+1;

A[k]:=n mod 10;

N:=N div 10;

End;

{перетворення числового масиву в число}

S:=0;

For i:= 1 to k do

S:=S+ A[i]*exp((k-i)*ln(10));

{округлення число до цілого}

N:=round(S);

Writeln('число', n);

End.

Варіант 2.

Var

N:longint;

K,i,cod:integer;

D,b:string;

Begin

{блок введення (приклад: ввели число 123456)}

Writeln('Введіть число');

Read(n);

{число переведемо в літерну величину }

STR(n,a);

k:=length(a);

{перевернемо літерну величину}

for i:= 1 to k do

b:= copy (A,i,1);

d:=b+d;

end;

{літерну величину перетворимо в число}

val(d,n,cod);

Writeln('число', n);

End.

  1. Дано ціле число. Видалити числа які повторюються (лишити по одному).

Var

N:longint;

K,i,cod:integer;

D,b:string;

Begin

{блок введення ( приклад: ввели число 123456)}

Writeln('Введіть число');

Read(n);

{число переведемо в літерну величину }

STR(n,a); k:=length(a);

{цифри занесемо в масив}

for i:= 1 to k do A[i]:= copy (A,i,1); end;

{формуємо масив з чисел, що не повторяються}

c[1]:=a[1];l:=1;

for i:= 2 to k do begin

f:=0;

for j:= 1 to l do begin

if c[j]=A[i] then f:=1;

if f=0 then begin L:=L+1; c[L]:=A[i];

{формуємо число з літерного масиву С}

for i:= 1 to l do D:=D+C[I];

val(d,n,cod);

Writeln('число', n);

End.

  1. Дано рядок символів, знайти і видалити найдовше слово з рядка.

Послідовність вирішення задачі:

вводимо рядок, розбиваємо на масив по словах, знаходимо найдовше слово, находимо його позицію, та видаляємо з фрази, фразу виводимо на екран.

Var

Begin

Writeln('Введіть речення ');

Readln(а);

A:=a+' ';

k:=length(a);

{блок занесення слів в масив}

d:=''; L:=0;

for i:= 1 to k do begin

b:= copy (A,i,1);

if b<>' ' then d:=d+b;

if (B= ' ') and (d<>'') then begin l:=l+1; c[l]:=d; d:=''; end;

end;

max:= length(c[1]); i1:=1;

for i:= 2 to l do

if c[i]>max then begin max:=length(c[i]); i1:=i;end;

k:=pos(c[i1]);

delete(А,k,length(c[i1])+1)

Writeln(A);

End.

  1. Дано рядок, розрахувати кількість голосних букв (біля кожного рядка зробіть пояснення дій та об'явіть змінні)

Var

Const c;array[1 ..10] of char =('a','A' )

Begin

Writeln('Введіть речення ');

Readln(а);

k:=length(a);

{блок занесення слів в масив}

L:=0;

for i:= 1 to k do

b:= copy (A,i,1);

for j:= 1 to 10 do

if b=c[j] then L:=L+1;

Writeln(L);

End.

  1. Дата рядок, видалити всі зайві прогалини залишивши по одному.

Var

Begin

Writeln('Введіть речення ');

Readln(а);

k:=length(a);

{блок занесення слів в масив}

f:=0;

while f=0 do begin

k:= pos(a,' ');

if k<>0 then delete(A,k+1,1);

if k=0 then f:=1;

end;

Writeln(A);

End.

  1. Дано послідовність дійсних чисел, видалити максимальне число.

Var

Begin

Writeln('введіть кількість елементів ');

Readln(n);

{змініть фрагмент добавивши вивід номера введеного елемента}

For i:= 1 to n do

Readln(a[i]);

Max:=A[1]; i1:=1;

For i:= 2 to n do

If a[i]>max then begin Max:=A[i]; i1:=i; end;

For i:= i1 to n-1 do

A[i]:=A[i+1];

N:= n-1;

{блок виводу масиву}

end.

  1. Дано послідовність дійсних чисел, на місці останнього числа розмістити середнє арифметичне позитивних чисел.

Var

Begin

{блок вводу масиву }

{Блок розрахунку середнього арифметичного }

S:=0; k:=0;

For i:= 1 to n do

If a[i]>0 then begin S:=S+A[i]; k:=K+1; end;

{розрахувати середнє арифметичне, за умови К<>0 }

{розмістіть елемент та виведіть масив}

end.

  1. Дано послідовність дійсних чисел, знайти максимальну кількість чисел, що повторюються.

Ввести масив, створити масив чисел, з яких складається перший масив, створити масив з кількості повторів чисел, знайти максимальну кількість повторів, вивести число.

Var

Begin

Writeln('Введіть кількість елементів ');

Readln(n);

{змініть фрагмент, додавши вивід номера введеного елемента}

For i:= 1 to n do Readln(a[i]);

c[1]:=a[1];l:=1;

for i:= 2 to ndo begin

f:=0;

for j:= 1 to l do begin

if c[j]=A[i] then f:=1;

if f=0 then begin L:=L+1; c[L]:=A[i]; end;

for i:= 1 to l do begin

k:=0;

for j:= 1 to n do if c[i]=a[j] then k:=k+1;

b[i]:=k;

end;

Max:=b[1]; i1:=1;

For i:= 2 to l do

If b[i]>max then begin Max:=b[i]; i1:=i; end;

{добавте блок виводу}

end.

  1. Дано послідовність дійсних чисел, відсортувати по зростанню першу половину.

{приведено фрагмент сортування масиву по зростанню, дописати всю програму. Програма складається з наступних блоків: ввід масиву , вивід, сортировка, вивід нового масиву}

Сортування масиву з пошуком найменшого елементу

For i:= 1 to n-1 do begin

Min:=b[i]; i1:=i;

For j:= i to n do

If b[j]<min then begin Min:=b[j]; i1:=j; end;

C:=b[i];b[i]:=min;b[i1]:=c;

End;

Сортування масиву перестановкою

For i:= 1 to n-1 do

For j:= 1 to n-1 do

If a[j]>a[j+1] then begin d:=a[j];a[j]:=a[j+1];a[j+1]:=d; end;

  1. Дано довільний двомірний масив, парні рядки розмістити по зростанню, непарні по спаданню.

Var {об'явіть змінні}

Begin

Writeln('n,m');

Readln(n,m);

For i:=1 to n do{зробити ввід з підказкою}

For j:=1 to m do

Readln(a[i,j]);

{Вивід масиву}

For i:=1 to n do{зробити вивід більш наглядним, які проблеми виводу?}

For j:=1 to m do

Writeln(a[i,j]);

I:= 1 ;

While i<=n do begin

For k:= 1 to m-1 do

For j:= 1 to m-1 do

If a[i,j]>a[i,j+1] then begin b:=a[i,j];a[i,j]:=a[i,j+1]; a[i,j+1]:=b; end;

I:=i+2;

End;

I:= 2 ;

While i<=n do begin

For k:= 1 to m-1 do

For j:= 1 to m-1 do

If a[i,j]<a[i,j+1] then begin b:=a[i,j];a[i,j]:=a[i,j+1]; a[i,j+1]:=b; end;

I:=i+2;

End;

{Вивід масиву}

end.

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

Розробити програму, додавши необхідні блоки.

Блок перестановки.

I:= 1 ;

While i<=n do begin

For j:= 1 to m do begin

b:=a[i,j];a[i,j]:=a[i+1,j]; a[i+1,j]:=b; end;

I:=i+2;

End;

  1. Дано довільний двомірний масив, видалити рядок і стовпчик де знаходиться максимальний елемент масиву.

Розробити програму, додавши необхідні блоки.

Блок пошуку максимального елемента масиву

Max:=a[1,1]; i1:=1;j1:=1;

For i:= 1 to n do

For j:= 1 to n do

If a[i,j]>max then begin max:=a[i,j];i1:=i;j1:=j; end;

Блок видалення i1 рядка та j1 стовпчика

For j:= 1 to m do A[i1,j]:= a[i1+1,j];

N:=n-1;

For i:= 1 to n do A[i,j1]:= a[i,j1+1];

m:=m-1;

  1. Дано двомірний масив розмірністю N-M, знайти суму рядка і стовпчика на перетинанні яких знаходиться максимальний елемент масиву.

Ввід масиву

Пошук максимального елемента

Блок підрахунку суми

S:=0;

For i:= 1 to n do

S:=S+a[i,j1];

For i:= 1 to m do

S:=S+a[i1,i];

Блок виводу результатів

  1. Дано двомірний масив розмірністю N-N, знайти суму рядка і стовпчика на перетинанні яких знаходиться максимальний елемент другорядної діагоналі.

Ввід масиву

Пошук максимального елемента другорядної діагоналі

Max:=a[1,n]; i1:=1;j1:=n;

For i:= 1 to n do

For j:= 1 to n do

If (a[i,j]>max) and (i+j=n+1) then begin max:=a[i,j];i1:=i;j1:=j; end;

Блок підрахунку суми

S:=0;

For i:= 1 to n do

S:=S+a[i,j1];

For i:= 1 to m do

S:=S+a[i1,i];

Блок виводу результатів

  1. Дано двомірний масив розмірністю N-M, перетворити його в одномірний.

Ввід масиву A

K:=0;

For i:= 1 to n do

For j:= 1 to n do

K:=k+1;

C[k]:=a[i,j];

Вивід масиву С

  1. Дано одномірний масив розмірністю N, знайти суму цифр розташованих після останнього від'ємного .

Ввід масиву, пошук останнього від'ємного, знаходження суми цифр після нього.

  1. Дано стандартний ряд цілих чисел. Призвести введене число до найближчого меншого стандартного.

Const

A:array[1 ..10]of real=(5,10,15,20,25,30,35,40,45,50);

Var

Begin

Readln(n);

I:=1 ;

While a[i]<n do i:=i+1;

N:=a[i-1];

  1. Заповнити двомірний масив N-N по спіралі числами 1.2.3.4.5....

var

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

i,j,k,l,n:integer;

begin

read(n);

l:=0;k:=0;

While l<n*n do begin

K:=k+1;

I:=k;

For j:= k to n-k+1 do begin

l:= l+1;

A[i,j]:=l;

end;

j:=n-k+1;

For i:= k+1 to n-k+1 do begin

l:= l+1;

A[i,j]:=l; end;

I:=n-k+1;

For j:= n-k downto k do begin

l:= l+1;

A[i,j]:=l; end;

j:=k;

For i:= n-k downto k+1 do begin

l:= l+1;

A[i,j]:=l; end;

End;

for i:=1 to n do begin

for j:=1 to n do

write(a[i,j]:5);writeln;

end;

end.

  1. Знайти кількість простих цілих чисел в інтервалі 1-100. {допишіть необхідні оператори}

var

begin

For i:= 1 to 100 do begin

K:=0;

For j:=1 to i do

If i mod j =0 thet k:=k+1;

if k=2 then l:=l+1;

end;

  1. У рядку s замінити всі послідовності символів s1 на послідовність s2. .

PROGRAM Update;

VAR s:string[30];

s1,s2:string[20];

i:integer;

BEGIN

writeln('Введіть початковий текст:');

readln(s);

writeln('Замінити:'); readln(s1);

writeln('на:'); readln(s2);

while pos(s1,s) > 0) do

begin

i := pos(s1,s);

delete(s,i,length(s1));

insert(s2,s,i);

end;

writeln('Новий текст:');

writeln(s)

eND.

21.Введений рядок (слово) перевернути задом-наперед. Тобто, якщо ввести "програма", повинна бути виведена "аммаргорп".

Program End_to_begin;

Var s:string[25];

i,len:integer;

c:char;

BEGIN

writeln('Введіть рядок:');

readln(s);

len := length(s);

for i:=1 to (len div 2) do

begin

c := s[len-i+1];

s[len-i+1] := s[i];

s[i] := c

end;

writeln(s)

END.