Розв’язок задач на мові програмування Pascal

Розробка програмних засобів в професійному програмуванні. Використання простих і гнучких структур розгалужень, циклів. Фундаментальні ідеї алгоритмів. Стандартні функції і процедури. Алгоритми з розгалуженням. Загальна форма запису циклу з лічильником.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык украинский
Дата добавления 15.12.2012
Размер файла 227,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

writeln;

vuvod;

writeln;

kilkist;

readln;

End.

Program z_9_11;

Uses CRT;

Var

A:array[1..20] of real;

k:integer;

d:real;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to 20 do

begin

Write(`A[`,І,']=>');

Readln(A[і]);

end

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to 20 do

Write(A[І]:5:1);

end;

Procedure dob_k;

Var

і:integer;

begin

D:=1;

For і:=1 to k do

D:=d*A[і];

Writeln(`D=`,d:4:2);

end;

Begin

clrscr;

Write(`k=>');

Readln(k);

vvod;

writeln;

vuvod;

writeln;

dob_k;

readln;

End.

10 Задача

Учням першого класу призначають додаткову склянку соку та булочку, якщо першокласник важить менше 30 кг. В перших класах ліцею навчається n учнів. Склянка соку має об'єм 200 мл, а замовлені упаковки соку - 1,5 л. Визначити кількість додаткових пакетів соку та булочок необхідно щодня.

Program pershoklas;

Uses CRT;

Const n=25;

Var

A:array[1..n] of real;

k,m:integer;

c:real;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to n do

begin

Write(`A[`,І,']=>');

Readln(A[і]);

end

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to n do

Write(A[І]:5:1);

end;

Procedure kilkist;

Var

і:integer;

begin

k:=0;

For і:=1 to n do

begin

If A[і]<=c then k:=k+1

end;

Writeln(`Bylok neobxidno: `,k);

end;

Begin

clrscr;

Write(`c=>');

Readln( c);

vvod;

writeln;

vuvod;

writeln;

kilkist;

m:=k*0.2/1.5

writeln(`Neobxidno `,m:3:0,' paketu soky');

readln;

End.

Задача 11

Для ведення щоденника погоди є три масиви даних: масив значень температури повітря, масив значень атмосферного тиску і масив значень швидкості вітру. Необхідно визначити :

1. Середнє значення температури, атмосферного тиску та швидкості вітру протягом поточного місяця;

2. Максимальні та мінімальні значення температури,атмосферного тиску та швидкості вітру за місяць із зазначенням днів, коли характеристики стану погоди мала ці значення;

3. Кількість днів протягом місяця, коли температура повітря була від'ємною і коли додатною;

4. Кількість днів протягом місяця, коли швидкість вітру перевищувала задане значення;

Program cshoden_pogodu;

Uses CRT;

Const n=5;

Var

T:array[1..n] of real;

A:array[1..n] of real;

B:array[1..n] of real;

N_maxt,n_maxa,n_maxb,n_mint,n_mina,n_minb,tk_d,tk_v,k:integer;

St,sa, sb,srt,sra,srb,max_t,max_a,max_b,min_t,min_a,min_b,c:real;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to n do

begin

Writeln(І,'-uj den:');

Write('Temperatyra povitrya:');

Readln(T[і]);

Write('Atmosfernuj tusk: ');

Readln(A[і]);

Write('Shvudkist vitry: ');

Readln(b[і]);

end

end;

Procedure seredne;

Var

і:integer;

begin

st:=0;

sa:=0;

sb:=0;

For і:=1 to n do

begin

St:=st+t[і];

Sa:=sa+a[і];

Sb:=sb+b[і];

end;

Srt:=st/n;

Sra:=sa/n;

Srb:=sb/n;

Writeln('Temperatyra: ',srt:5:1);

Writeln('Atmosfernuj tusk: ',sra:3:0);

Writeln('Shvudkist vitry: ',srb:5:2);

end;

Procedure Max;

Var

і:integer;

begin

i:=1;

Max_t:=T[1];

N_maxt:=1;

Max_a:=A[1];

N_maxa:=1;

Max_b:=B[1];

N_maxb:=1;

While і<n do

begin

i:=і+1;;

If T[і]>max_t then

begin

Max_t:=T[і];

N_maxt:=і

end;

If A[і]>max_a then

begin

Max_a:=A[і];

N_maxa:=і

end;

If B[і]>max_b then

begin

Max_b:=B[і];

N_maxb:=і

end;

end;

Writeln('Temperatyra: ',Max_t:5:1,', ',N_maxt,'-j den');

Writeln('Atmosfernuj tusk: ',Max_a:3:0,', ',N_maxa,'-j den');

Writeln('Shvudkist vitry: ',Max_b:5:2,', ',N_maxb,'-j den');

end;

Procedure Min;

Var

і:integer;

begin

i:=1;

Min_t:=T[1];

N_mint:=1;

Min_a:=A[1];

N_mina:=1;

Min_b:=B[1];

N_minb:=1;

While і<n do

begin

i:=і+1;;

If T[і]<min_t then

begin

Min_t:=T[і];

N_mint:=і

end;

If A[і]<min_a then

begin

Min_a:=A[і];

N_mina:=і

end;

If B[і]<min_b then

begin

Min_b:=B[і];

N_minb:=і

end;

end;

Writeln('Temperatyra: ',Min_t:5:1,', ',N_mint,'-j den');

Writeln('Atmosfernuj tusk: ',Min_a:3:0,', ',N_mina,'-j den');

Writeln('Shvudkist vitry: ',Min_b:5:2,', ',N_minb,'-j den');

end;

Procedure dodatni;

Var

і:integer;

begin

Tk_d:=0;

For і:=1 to n do

If T[і]>0 then tk_d:=tk_d+1

Writeln('Kilkist dniv, protyagom yakux');

Writeln('temperatyra byla dodatnoj: ',tk_d);

end;

Procedure videmni;

Var

і:integer;

begin

Tk_v:=0;

For і:=1 to n do

If A[і]<0 then tk_v:=tk_v+1

Writeln('Kilkist dniv, protyagom yakux');

Writeln('temperatyra byla videmnoj: ',tk_d);

end;

Procedure kilkist;

Var

і:integer;

begin

k:=0;

For і:=1 to n do

If B[і]>c then k:=k+1

Writeln('Kilkist dniv, kolu shvudkist');

Writeln('vitry perevuschyvala ',c:2:0,' m/c: ',k);

end;

Begin

clrscr;

vvod;

writeln;

Write('znachennya shvudkosti vitry: ');

Readln(c);

writeln;

writeln('Seredni znachennya');

seredne;

writeln;

writeln('Maxumalni znachennya');

max;

writeln;

writeln('Minimalni znachennya');

min;

writeln;

dodatni;

writeln;

videmni;

writeln;

kilkist;

readln;

End.

Задача 12

Є три види циліндрів. Для циліндрів кожного виду відомий оптимальний діаметр D. Циліндри кожного виду можна використовувати, якщо його дійсний діаметр відрізняється від оптимального не більше ніж на значення х. Якщо кількість браку виявиться більшою за чверть загальної кількості циліндрів даного виду, то таку партію циліндрів потрібно повернути постачальникам. Необхідно вияснити кількість якісних циліндрів у кожній з трьох партій та визначити, чи потрібно вертати партію деталей постачальникам.

Program zulindru;

Uses CRT;

Const

n1=20;

n2=16;

n3=25;

Var

Z1:array[1..n1] of real;

Z2:array[1..n2] of real;

Z3:array[1..n3] of real;

d_op,x:real;

k1,k2,k3:integer;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to n1 do

begin

Write(`Z1[`,І,']=>');

Readln(z1[і]);

end;

For і:=1 to n2 do

begin

Write(`Z2[`,І,']=>');

Readln(z2[і]);

end;

For і:=1 to n3 do

begin

Write(`Z3[`,І,']=>');

Readln(z3[і]);

end;

end;

Procedure brak;

Var

і:integer;

begin

K1:=0;

K2:=0;

K3:=0;

For і:=1 to n1 do

begin

If abs(d_op-z1[і])>x Then k1:=k1+1;

end;

For і:=1 to n2 do

begin

If abs(d_op-z2[і])>x Then k2:=k2+1;

end;

For і:=1 to n3 do

begin

If abs(d_op-z3[і])>x Then k3:=k3+1;

end;

end;

Procedure povernennya;

Var

і:integer;

begin

If k1>n1/4 then Writeln(`І vud zulindriv neobxidno povernytu`)

else Writeln(`І vud zulindriv nepotribno povertatu`);

If k2>n2/4 then Writeln(`II vud zulindriv neobxidno povernytu`)

else Writeln(`II vud zulindriv nepotribno povertatu`);

If k3>n3/4 then Writeln(`III vud zulindriv neobxidno povernytu`)

else Writeln(`III vud zulindriv nepotribno povertatu`);

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to n1 do

Write(z1[І]:5:1);

end;

Writeln;

For і:=1 to n2 do

Write(z2[І]:5:1);

Writeln;

For і:=1 to n3 do

Write(z3[І]:5:1);

end;

Begin

clrscr;

writeln(`Yvedit optumalnuj diametr zulindriv');

readln(d_op);

writeln(`Yvedit vidxulennya vid optumalnogo diametry zulindriv');

readln(x);

vvod;

vuvod;

writeln;

brak;

povernennya;

readln;

End.

Задача 13

Елементи масиву С є випадковими цілими числами. Виведіть елементи цього масиву на екран та вилучить:

1. Елементи масиву, значення яких кратне 5;

2. Елементи масиву, значення яких менші за ціле число х;

3. Елементи масиву, номери яких дорівнюють квадрату цілого числа;

4. Елементи масиву, номери яких є простими числами.

Program z_13_1;

Uses CRT;

Const n=20;

Var

C:array[1..n] of integer;

k:integer;

Procedure vvod;

Var

i:1..n;

begin

Randomize;

For i:=1 to n do

C[i]:=random(100);

end;

Procedure vuvod(n:integer);

Var

i:1..n;

begin

For i:=1 to n do

Write(C[I]:4);

end;

Procedure zsyv;

Var

j:integer;

begin

For j:=i+1 to n do

C[j-1]:=C[j]

end;

Procedure vudalennya;

Var

i:1..n;

begin

K:=0;

For i:=1 to n do

begin

If (C[i] mod 5)=0 then

begin

While (C[i] mod 5)=0 do

begin

zsyv;

K:=k+1;

end;

end;

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

vudalennya;

m:=n-k;

vuvod;

readln;

End.

Program z_13_2;

Uses CRT;

Const n=20;

Var

C:array[1..n] of integer;

i,k,m,x:integer;

Procedure vvod;

begin

Randomize;

For i:=1 to n do

C[i]:=random(100);

end;

Procedure vuvod(n:integer);

begin

For i:=1 to n do

Write(C[I]:4);

end;

Procedure zsyv;

Var

j:integer;

begin

For j:=i+1 to n do

C[j-1]:=C[j]

end;

Procedure vudalennya;

begin

K:=0;

For i:=1 to n do

begin

If C[i]<x then

begin

While C[i]<x do

begin

zsyv;

K:=k+1;

end;

end;

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod(n);

WriteLn;

write('Yvedt x=');

readln(x);

vudalennya;

m:=n-k;

vuvod(m);

readln;

End.

Program z_13_3;

Uses CRT;

Const n=20;

Var

C:array[1..n] of integer;

x,k,m:integer;

Procedure vvod;

Var

i:1..n;

begin

Randomize;

For i:=1 to n do

C[i]:=random(100);

end;

Procedure vuvod(n:integer);

Var

i:1..n;

begin

For i:=1 to n do

Write(C[I]:4);

end;

Procedure zsyv;

Var

j:integer;

begin

For j:=i+1 to n do

C[j-1]:=C[j]

end;

Procedure vudalennya;

Var

i:1..n;

begin

K:=0;

For i:=1 to n do

begin

If C[i]=sqr(x) then

begin

While C[i]=sqr(x) do

begin

zsyv;

K:=k+1;

end;

end;

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod(n);

writeln(`Yvedt x');

readln(x);

vudalennya;

m:=n-k;

vuvod;

readln;

End.

Program z_13_4;

Uses CRT;

Const n=20;

Var

C:array[1..n] of integer;

k,m,x:integer;

Procedure vvod;

Var

i:1..n;

begin

Randomize;

For i:=1 to n do

C[i]:=random(100);

end;

Procedure vuvod(n:integer);

Var

i:1..n;

begin

For i:=1 to n do

Write(C[I]:4);

end;

Procedure vudalennya;

Var

i:1..n;

j:integer;

F: Boolean;

Procedure proste;

begin

while(j<=x) and (not f) do

begin

if (i mod j)=0 then f:=true;

j:=j+1

end;

end;

Procedure zsyv;

m:integer;

begin

For m:=i+1 to n do

C[m-1]:=C[m]

end;

begin

For i:=2 to n do

begin

x:=trunc(sqrt(i));

f:=false;

j:=2;

proste;

if not f then

begin

C[1]:=0;;

C[i]:=0;

end;

end;

For i:1 to n do

begin

If C[i]=0 then

begin

Zsyv;

K:=k+1;

end;

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod(n);

writeln;

vudalennya;

m:=n-k;

vuvod(m);

readln;

End.

Задача 14

Елементи масиву А[1..15] - є цілими числами, уведеними користувачем. Виведіть елементи цього масиву на екран та вcтавте:

1. Уведене користувачем число на 10-те місце масиву;

2. Число, що дорівнює кубу другого елементумасиву дійсних чисел, на m-те місце (значення елементів цього масиву є випадковими числами);

3. Число, що дорівнює різниці першого та останнього елементів масиву випадкових дійсних чисел, на місце мінімального елемента цього масиву.

Змінені масиви виведіть на екран, зазначивши номер кожного елементу массиву.

Program z_14_1;

Uses CRT;

Const m=16;

Var

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

b,n,x,i:integer;

Procedure vvod;

begin

For i:=1 to n do

begin

Write('A[',i,']=');

Readln(A[i]);

end;

end;

Procedure vuvod(n:integer);

begin

For i:=1 to n do

Write(i:4);

WriteLn;

For i:=1 to n do

Write(A[i]:4);

end;

Procedure zsyv;

Var

j:integer;

begin

b:=A[m-1];

For j:=m-1 downto 10 do

A[j+1]:=A[j]

end;

Procedure vstavka;

begin

zsyv;

A[10]:=x;

end;

Begin

Clrscr;

n:=m-1;

vvod;

writeln;

vuvod(n);

writeln;

writeln('Ybedin chuslo');

readln(x);

vstavka;

vuvod(m);

writeln;

readln;

End.

Program z_14_2;

Uses CRT;

Const n=16;

Var

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

B:array[1..n] of real;

c,m,z:integer;

Procedure vvod;

Var

і:1..n;

begin

For і:=1 to n-1 do

begin

Write('A[',І,']=');

Readln(A[і]);

end;

end;

Procedure vvod1;

Var

і:1..n;

begin

Randomize;

For і:=1 to n do

B[і]:=random(16);

end;

Procedure vuvod;

Var

і:1..n;

begin

For і:=1 to n-1 do

Write(A[І]:5);

end;

Procedure vuvod4;

Var

і:1..n;

begin

For і:=1 to n-1 do

Write(B[і]:5:0);

end;

Procedure vstavka;

Var

і:1..n;

Procedure zsyv;

Var

j:integer;

begin

For j:=n-1 downto m do

A[j+1]:=A[j]

end;

begin

zsyv;

z:=round(B[2]);

A[m]:=z*sqr(z);

end;

Procedure vuvod1;

Var

і:1..n;

begin

For і:=1 to n do

Write(A[І]:5);

end;

Procedure vuvod2;

Var

і:1..n;

begin

For і:=1 to n-1 do

Write(І:5);

end;

Procedure vuvod3;

Var

і:1..n;

begin

For і:=1 to n do

Write(І:5);

end;

Begin

clrscr;

vvod;

vvod1;

writeln;

vuvod2;

writeln;

vuvod;

writeln;

vuvod4;

writeln;

write('Misze vstavku elementa v masuv A=>');

readln(m);

vstavka;

vuvod3;

writeln;

vuvod1;

readln;

End.

Program z_14_3;

Uses CRT;

Const n=16;

Var

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

B:array[1..n] of real;

Min_a,n_min,c,z:integer;

Procedure vvod;

Var

і:1..n;

begin

For і:=1 to n-1 do

begin

Write('A[',І,']=');

Readln(A[і]);

end;

end;

Procedure vvod1;

Var

і:1..n;

begin

Randomize;

For і:=1 to n do

B[і]:=random(16);

end;

Procedure vuvod;

Var

і:1..n;

begin

For і:=1 to n-1 do

Write(A[І]:5);

end;

Procedure vuvod4;

Var

і:1..n;

begin

For і:=1 to n-1 do

Write(B[і]:5:0);

end;

Procedure vstavka;

Var

і:1..n;

Procedure zsyv;

Var

j:integer;

begin

For j:=n-1 downto n_min do

A[j+1]:=A[j]

end;

Procedure Min;

Var

і:integer;

begin

i:=1;

Min_a:=A[1];

N_min:=1;

While і<n-1 do

begin

i:=і+1;;

If A[і]<min_a then

begin

Min_a:=A[і];

N_min:=і

end;

end;

end;

begin

min;

zsyv;

z:=round(B[1]-B[n-1]);

A[n_min]:=z;

end;

Procedure vuvod1;

Var

і:1..n;

begin

For і:=1 to n do

Write(A[І]:5);

end;

Procedure vuvod2;

Var

і:1..n;

begin

For і:=1 to n-1 do

Write(І:5);

end;

Procedure vuvod3;

Var

і:1..n;

begin

For і:=1 to n do

Write(І:5);

end;

Begin

clrscr;

vvod;

vvod1;

writeln;

vuvod2;

writeln;

vuvod;

writeln;

vuvod4;

writeln;

vstavka;

writeln;

vuvod3;

writeln;

vuvod1;

readln;

End.

Задача 15

Дано два одновимірних масиви з n елементів, якими є випадкові числа. Сформуйте з них масив елементи якого впорядкуйте за зростанням.

Program sort;

Uses CRT;

Const

n=10;

n1=20;

Var

A:array[1..n] of real;

B:array[1..n] of real;

C:array[1..n1] of real;

і,j,m:integer;

Procedure Swap;

Var

t:real;

begin

t:=C[j-1];

C[j-1]:=C[j];

C[j]:=t

end;

Procedure vvod;

Var

і:1..n;

begin

Randomize;

for і:=1 to n do

A[і]:=random(90);

end;

Procedure vvod1;

Var

і:1..n;

begin

Randomize;

for і:=1 to n do

B[і]:=random(100);

end;

Procedure vuvod;

Var

і:1..n;

begin

for і:=1 to n do

write(A[і]:4:0)

end;

Procedure vuvod1;

Var

j:1..n;

begin

for і:=1 to n1 do

write(C[і]:4:0)

end;

Procedure vuvod2;

Var

і:1..n;

begin

for і:=1 to n do

write(B[і]:4:0)

end;

Procedure obednannya;

Var

і:1..n;

j:1..n1;

begin

j:=1;

і:=1;

while j<=n do

begin

C[j]:=A[і];

j:=j+1;

і:=і+1;

end;

j:=n+1;

і:=1;

while j<=n1 do

begin

C[j]:=B[і];

j:=j+1;

і:=і+1;

end;

end;

Begin

clrscr;

vvod;

vvod1;

writeln('Pochatkovi masuvu:');

vuvod;

writeln;

vuvod2;

writeln;

obednannya;

vuvod1;

writeln;

m:=0;

for j:=1 to n1-1 do

begin

j:=n1;

C[j]:=C[n1];

while j>m do

begin

if C[j]>C[j-1] then Swap;

j:=j-1;

end;

m:=m+1;

end;

writeln('Yporyadkovanuj masuv:');

vuvod1;

readln;

End.

Задача 16

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

Program sort_bulb1;

Uses CRT;

Const n=30;

Var

T:array[1..n] of integer;

T1:array[1..n] of integer;

і,j,m:integer;

Procedure Swap;

Var

a:integer;

begin

a:=T1[і-1];

T1[і-1]:=T1[і];

T1[і]:=a

end;

Procedure vvod;

Var

і:1..n;

begin

Randomize;

for і:=1 to n do

T[і]:=random(10);

end;

Procedure vuvod;

Var

і:1..n;

begin

for і:=1 to n do

write(T[і]:3)

end;

Procedure vuvod1;

Var

і:1..n;

begin

for і:=1 to n do

write(T1[і]:3)

end;

Begin

clrscr;

vvod;

writeln('Pochatkovuj masuv:');

vuvod;

writeln;

writeln;

for і:=1 to n do

T1[і]:=T[і]

vuvod1;

writeln;

m:=0;

for і:=1 to n-1 do

begin

і:=n;

T1[і]:=T1[n];

while і>m do

begin

if T1[і]>=T1[і-1] then Swap;

і:=і-1;

end;

m:=m+1;

end;

writeln('Yporyadkovanuj masuv:');

vuvod1;

writeln;

j:=0;

for і:=1 to n do

if T1[і]=T[і] then j:=j+1;

writeln(j,' elementu masuvy zalushulus na svojx miszyax');

readln;

End.

Задача 17

Із цілочислових значень елементів масиву A[1..2n] сформуйте масиви B[1..n] та C[1..n] за таким правилом. Оберіть у масиві А два найближчих за значенням елементи. Менший із них розмістіть у масиві В, більший у масиві С. Формуємо масив и В і С, поки не буде розглянуто всі елементи масиву А.

Program dil_mas;

Uses CRT;

Const

n=10;

n1=20;

Var

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

B:array[1..n] of integer;

C:array[1..n1] of integer;

і,j,m:integer;

Procedure vvod;

Var

j:1..n1;

begin

Randomize;

for j:=1 to n1 do

A[j]:=random(100);

end;

Procedure vuvod;

Var

і:1..n1;

begin

for і:=1 to n1 do

write(A[і]:4)

end;

Procedure vuvod1;

Var

j:1..n;

begin

for і:=1 to n do

write(B[і]:4)

end;

Procedure vuvod2;

Var

і:1..n;

begin

for і:=1 to n do

write(C[і]:4)

end;

Procedure formyvannya;

Var

і:1..n;

j:1..n1;

begin

j:=1;

і:=1;

while j<=n1-1 do

begin

if A[j]>=A[j+1] then

begin

B[і]:=A[j+1];

C[і]:=A[j];

end

else

begin

B[і]:=A[j];

C[і]:=A[j+1];

end;

j:=j+2;

і:=і+1;

end;

end;

Begin

clrscr;

vvod;

writeln('Masuv A:');

vuvod;

writeln;

formyvannya;

writeln('Masuv B:');

vuvod1;

writeln;

writeln('Masuv C:');

vuvod2;

readln;

End.

Задача 18

Є масив A[1..n] - середніх балів учні. Необхідно впорядкувати його за незростанням. Визначити, чи одинакові значення має поточний елемент із наступними сусідніми елементами масиву та кількість однакових сусідів.

Метод «Бульбашки»

Program sort_bulb3;

Uses CRT;

Const n=30;

Var

B:array[1..n] of real;

і,j,m:integer;

Procedure Swap;

Var

a:real;

begin

a:=B[і-1];

B[і-1]:=B[і];

B[і]:=a

end;

Procedure vvod;

Var

і:1..n;

begin

Randomize;

for і:=1 to n do

B[і]:=random(12);

end;

Procedure vuvod;

Var

і:1..n;

begin

for і:=1 to n do

write(B[і]:5:1)

end;

Begin

clrscr;

vvod;

writeln('Pochatkovuj masuv:');

vuvod;

writeln;

m:=0;

for і:=1 to n-1 do

begin

і:=n;

B[і]:=B[n];

while і>m do

begin

if B[і]>=B[і-1] then Swap;

і:=і-1;

end;

m:=m+1;

end;

writeln('Yporyadkovanuj masuv:');

vuvod;

writeln;

і:=1;

m:=0;

while і<=n-1 do

begin

if B[і]=B[і+1] then

begin

write('Cerednij bal ',B[і]:5:1);

m:=m+2;

for j:=і+2 to n do

begin

if B[і]=B[j] then

begin

m:=m+1;

і:=і+1;

end;

end;

writeln(' mae ',m,' ychniv');

end;

і:=і+1;

m:=0;

end;

readln;

End.

Метод перестановки

Program sort_per1;

Uses CRT;

Const n=30;

Var

B:array[1..n] of real;

і,j,m:integer;

Function B_max(k:integer):integer;

Var

і,n_max:integer;

max:real;

begin

і:=k;

max:=B[k];

while і<n do

begin

і:=і+1;

if B[і]>max then

begin

n_max:=і;

max:=B[і]

end

end;

B_max:=n_max;

end;

Procedure Swap(Var x,y:real);

Var

a:real;

begin

a:=x;

x:=y;

y:=a

end;

Procedure vvod;

Var

і:1..n;

begin

Randomize;

for і:=1 to n do

B[і]:=random(12);

end;

Procedure vuvod;

Var

і:1..n;

begin

for і:=1 to n do

write(B[і]:5:1)

end;

Begin

clrscr;

vvod;

writeln('Pochatkovuj masuv:');

vuvod;

writeln;

і:=0;

while і<n-1 do

begin

і:=і+1;

Swap(B[і],B[B_Max(і)]);

end;

writeln('Yporyadkovanuj masuv:');

vuvod;

writeln;

і:=1;

m:=0;

while і<=n-1 do

begin

if B[і]=B[і+1] then

begin

write('Cerednij bal ',B[і]:5:1);

m:=m+2;

for j:=і+2 to n do

begin

if B[і]=B[j] then

begin

m:=m+1;

і:=і+1;

end;

end;

writeln(' mae ',m,' ychniv');

end;

і:=і+1;

m:=0;

end;

readln;

End.

Задача 19

Для заданого користувачем чотирицифрового числа n визначити кількість кроків, які потрібно виконати для отримання сталої Капрекара. Програма повинна виводити на екран результати кожного етапу.

Program Kaprikara;

Uses Crt;

Const n=4;

Var

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

b,c,r,k,і,j:integer;

Procedure vvod;

Var

і:1..n;

begin

for і:=1 to n do

begin

write('A[',І,']=');

readln(A[і]);

end;

end;

Procedure Swap;

Var

t:integer;

begin

t:=A[і-1];

A[і-1]:=A[і];

A[і]:=t

end;

Begin

clrscr;

vvod;

repeat

j:=0;

for і:=1 to n-1 do

begin

і:=n;

A[і]:=A[n];

while і>j+1 do

begin

if A[і]>A[і-1] then Swap;

і:=і-1;

end;

j:=j+1;

end;

b:=A[1]*1000+A[2]*100+A[3]*10+A[4];

j:=0;

for і:=1 to n-1 do

begin

і:=n;

A[і]:=A[n];

while і>j+1 do

begin

if A[і]<A[і-1] then Swap;

і:=і-1;

end;

j:=j+1;

end;

c:=A[1]*1000+A[2]*100+A[3]*10+A[4];

r:=b-c;

writeln( r);

A[1]:=r div 1000;

A[2]:=(r mod 1000) div 100;

A[3]:=(r mod 100) div 10;

A[4]:=r mod 10;

K:=k+1;

until r=6174;

writeln(k);

readln;

End.

Розробіть програму, що визначає значення сталої Капрекара для трицифрових чисел та кількість кроків потрібних для перетворення числа до отримання цього значення.

Program Kaprikara;

Uses Crt;

Const n=3;

Var

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

b,c,r,k,і,j:integer;

Procedure vvod;

Var

і:1..n;

begin

for і:=1 to n do

begin

write('A[',І,']=');

readln(A[і]);

end;

end;

Procedure Swap;

Var

t:integer;

begin

t:=A[і-1];

A[і-1]:=A[і];

A[і]:=t

end;

Begin

clrscr;

vvod;

repeat

j:=0;

for і:=1 to n-1 do

begin

і:=n;

A[і]:=A[n];

while і>j+1 do

begin

if A[і]>A[і-1] then Swap;

і:=і-1;

end;

j:=j+1;

end;

b:=A[1]*100+A[2]*10+A[3];

j:=0;

for і:=1 to n-1 do

begin

і:=n;

A[і]:=A[n];

while і>j+1 do

begin

if A[і]<A[і-1] then Swap;

і:=і-1;

end;

j:=j+1;

end;

c:=A[1]*100+A[2]*10+A[3];

r:=b-c;

writeln( r);

A[1]:=r div 100;

A[2]:=(r mod 100) div 10;

A[3]:=r mod 10;

K:=k+1;

until r=594;

writeln(k);

readln;

End.

Задача 20

В одновимірному цілочисловому масиві A[1..n] є нульові елементи. Необхідно сфлрмувати массив В, елементами якого є індекси цих нульових елементів.

Program nul_masuv;

Uses CRT;

Const n=10;

Var

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

B:array[1..n] of integer;

і,j,m:integer;

Begin

clrscr;

for і:=1 to n do

begin

write('A[',і,']:=');

readln(A[і]);

end;

writeln('Masuv A:');

for і:=1 to n do

write(A[і]:4);

writeln;

m:=0;

for і:=1 to n do

begin

if A[і]=0 then

begin

m:=m+1;

for j:=1 to m do;

B[j]:=І;

end

Else writeln(`Y masuvi A nylovi element vidsytni');

end;

writeln('Masuv B:');

for j:=1 to m do

write(B[j]:4);

writeln;

readln;

End.

Задача 21

В одновимірному цілочисловому масиві A[1..n] вивести на екран лише ті його елементи, для яких A[і]>=і.

Program nul_masuv;

Uses CRT;

Const n=10;

Var

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

і,j,m:integer;

Begin

clrscr;

for і:=1 to n do

begin

write('A[',і,']:=');

readln(A[і]);

end;

writeln('Masuv A:');

for і:=1 to n do

write(A[і]:4);

writeln;

m:=0;

for і:=1 to n do

begin

if A[і]>=і then

begin

m:=m+1;

for j:=1 to m do;

A[j]:=A[І];

end;

end;

writeln('Masuv A:');

for j:=1 to m do

write(A[j]:4);

writeln;

readln;

End.

Задача 22

Дано одновимірний масив A[1..n] цілих чиселю Необхідно вивести на екран ті його елементи, у яких:

1. Індекси є степенями двійки;

2. Індекси є простими числами;

3. Індекси є членами послідовності Фібоначчі.

Program Z_22_1;

Uses Crt;

Const n=10;

Var

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

і,j,b,m:integer;

Begin

Clrscr;

for і:=1 to n do

begin

write('A[',і,']:=');

readln(A[і]);

end;

writeln('Masuv A:');

for і:=1 to n do

write(A[і]:4);

writeln;

m:=0;

b:=1;

While b<n do

begin

b:=b*2;

for і:=1 to n do

begin

if b=і then

begin

m:=m+1;

for j:=1 to m do;

A[j]:=A[І];

end;

end;

end;

writeln('Masuv A:');

for j:=1 to m do

write(A[j]:4);

writeln;

readln;

End.

Program Z_22_2;

Uses CRT;

Const n=10;

Var

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

і,j,b,c,m,x:integer;f:Boolean;

Procedure proste;

begin

while(c<=x) and (not f) do

begin

if (і mod c)=0 then f:=true;

c:=c+1

end;

end;

Begin

clrscr;

for і:=1 to n do

begin

write('A[',і,']:=');

readln(A[і]);

end;

writeln('Masuv A:');

for і:=1 to n do

write(A[і]:4);

writeln;

m:=0;

for і:=2 to n do

begin

x:=trunc(sqrt(і));

f:=false;

c:=2;

proste;

if not f then

begin

WriteLn( і );

m:=m+1;

for j:=1 to m do;

A[j]:=A[І];

end;

end;

writeln('Masuv A:');

for j:=1 to m do

write(A[j]:4);

writeln;

readln;

End.

Program Z_22_3;

Uses Crt;

Label 1;

Const n=10;

Var

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

і,j,b,c,m,d:integer;

Begin

Clrscr;

for і:=1 to n do

begin

write('A[',і,']:=');

readln(A[і]);

end;

writeln('Masuv A:');

for і:=1 to n do

write(A[і]:4);

writeln;

m:=0;

b:=0;

c:=1;

for і:=1 to n do

begin

d:=b+c;

if d>n then goto 1;

b:=c;

c:=d;

WriteLn( і,' ',d );

і:=d;

begin

m:=m+1;

for j:=1 to m do;

A[j]:=A[d];

end;

end;

1: writeln('Masuv A:');

for j:=1 to m do

write(A[j]:4);

writeln;

readln;

End.

Задача 23

програмування алгоритм процедура цикл

Дано одновимірний масив A[1..10] цілих чисел. Необхідно заповнити його таким чином, щоб сума елементів, розміщених рядом у трьох сусідніх комірках дорівнювала заздалегіть визначеному числу n.

Program sejf;

Uses crt;

label 1;

Var

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

і,j,n,s:integer;

Begin

clrscr;

write('n=');

readln(n);

for і:=1 to 2 do

begin

write('A[',і,']:=');

readln(A[і]);

end;

A[3]:=n-A[1]-A[2];

If A[3]>6 then Writeln('Zapovnutu masuv ne moghna')

Else

begin

i:=4;

While і<=n do

begin

A[і]:=A[1];

if і=10 then goto 1;

A[і+1]:=A[2];

if і=10 then goto 1;

A[і+2]:=A[3];

i:=і+3;

end;

end;

1: writeln('Masuv A:');

for і:=1 to 10 do

write(A[і]:4);

writeln;

readln;

End.

Задача 24

Дано два одновимірний масив A[1..n] та B[1..n], елементами яких є натуральні числа. Необхідно визначити таку перестановку елементів масивів, за якою сума добутків A[1]*B[1]+A[2]*B[2]+…+A[n]*B[n] є максимальною. Виведіть на екран переставлені за знайденим законом елементи масивів та визначене значення цієї максимальної суми.

Program m_symdob;

Uses crt;

Const n=10;

Type MAS=array[1..n] of integer;

Var

A:MAS;

B:MAS;

і,j,sd,m,t:integer;

Procedure sumdob;

begin

Sd:=0;

For і:=1 to n do

Sd:=sd+A[і]*B[і];

writeln('Sd=',sd);

end;

Begin

clrscr;

For і:=1 to n do

begin

write('A[',і,']=');

readln(A[І]);

end;

writeln('Pochatkovuj masuv A:');

For і:=1 to n do

write(A[і]:4);

writeln;

For і:=1 to n do

begin

write('B[',і,']=');

readln(B[і]);

end;

writeln('Pochatkovuj masuv B:');

For і:=1 to n do

write(B[і]:4);

writeln;

sumdob;

writeln;

m:=0;

for і:=1 to n-1 do

begin

і:=n;

A[і]:=A[n];

while і>m do

begin

if A[і]>=A[і-1] then

begin

t:=A[і-1];

A[і-1]:=A[і];

A[і]:=t

end;

і:=і-1;

end;

m:=m+1;

end;

writeln('Yporyadkovanuj masuv A:');

For і:=1 to n do

write(A[і]:4);

writeln;

m:=0;

for і:=1 to n-1 do

begin

і:=n;

B[і]:=B[n];

while і>m do

begin

if B[і]>=B[і-1] then

begin

t:=B[і-1];

B[і-1]:=B[і];

B[і]:=t

end;

і:=і-1;

end;

m:=m+1;

end;

writeln('Yporyadkovanuj masuv B:');

For і:=1 to n do

write(B[і]:4);

writeln;

sumdob;

readln;

End.

Задача 25

Координати кущів є пара цілих чисел xi, yi, де і =1,2,…,n. Необхідно знайти довжину прямокутного паркану, сторони якого паралельні осям координат. Від кутових кущів необхідно відступити на 1 м у кожному напрямку.

Program parkan;

Uses Crt;

Const n=10;

Var

X:array[1..n] of integer;

Y:array[1..n] of integer;

Min_x,min_y,max_x,max_y,L_x,L_y,І,L,Nmin_x,Nmin_y,Nmax_x,Nmax_y:integer;

Procedure vvod;

begin

for і:=1 to n do

begin

write('X[',і,']=');

readln(X[і]);

write('Y[',і,']=');

readln(Y[і]);

end;

end;

Procedure vuvod;

begin

for і:=1 to n do

begin

write(і,'-j ');

writeln(X[і],',',Y[і]);

end;

end;

Procedure shuruna;

begin

Min_x:=X[1];

Nmin_x:=1;

For і:=2 to n do

If X[і]<min_x then

begin

Min_x:=X[і];

Nmin_x:=І;

end;

Max_x:=X[1];

Nmax_x:=1;

For і:=1 to n do

If X[і]>Max_x then

begin

Max_x:=X[і];

Nmax_x:=І;

end;

L_x:=Max_x-Min_x+2;

end;

Procedure dovghuna;

begin

Min_y:=Y[1];

Nmin_y:=1;

For і:=2 to n do

If Y[і]<min_y then

begin

Min_y:=Y[і];

Nmin_y:=І;

end;

Max_y:=Y[1];

Nmax_y:=1;

For і:=1 to n do

If Y[і]>Max_y then

begin

Max_y:=Y[і];

Nmax_y:=І;

end;

L_y:=Max_y-Min_y+2;

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

shuruna;

dovghuna;

writeln(Nmin_x,'-j:',X[Nmin_x],',',Y[Nmin_x]);

writeln(Nmax_x,'-j:',X[Nmax_x],',',Y[Nmax_x]);

writeln(Nmin_y,'-j:',X[Nmin_y],',',Y[Nmin_y]);

writeln(Nmax_y,'-j:',X[Nmax_y],',',Y[Nmax_y]);

L:=2*L_x+2*L_y;

Writeln('L=',l);

readln;

End.

Завдання для самостійної роботи

1. У цілочисельному масиві A [1: n] знайдіть число, яке повторюється максимальну кількість разів. Якщо таких чисел декілька, то одне з них.

2. Змініть знак всіх непарних (парних) елементів масиву, що складається з L чисел.

3. "Стисніть" масив, "викинувши" кожен другий його елемент (додаткові масиви використовувати не дозволяється).

4. У масиві X (N) кожен елемент дорівнює 0, 1 або 2. Переставити елементи масиву так, щоб спочатку розташовувалися всі одиниці, потім все двійки і, нарешті, всі нулі (додаткового масиву не заводити).

5. У заданій послідовності всі елементи, не рівні нулю, розташувати зберігаючи їх порядок слідування, на початку послідовності, а нульові елементи - в кінці послідовності.

6. Дан одновимірний цілочисельний масив A (N). Відомо, що серед його елементів два і лише два рівні між собою. Надрукувати їх індекси.

7. Нехай дано впорядкований за неспаданням масив цілих або дійсних чисел і нехай дано деяке число b (відповідно ціле або дійсне), для якого потрібно знайти таке місце серед чисел, щоб після вставки числа b на це місце впорядкованість не порушилася.

8. З шестизначного числа виділити цифри і з них сформувати одновимірний масив.

9. Мажорірующим елементом у масиві А [1 .. n] будемо називати елемент, що зустрічається в масиві більш n/2 разів. Легко помітити, що в масиві може бути не більше одного мажорірующого елемента. Наприклад, масив 3, 3, 4, 2, 4, 4, 2, 4, 4, 3 має мажорірующий елемент 4. Необходлімо визначити, чи є в масиві мажорірующий елемент, і якщо є, то який.

10. Дан цілочисельний масив А довжиною n, в якому значеннями заповнені тільки перші m елементів (m <n). Дан також цілочисельний масив В довжиною r. Потрібен замість кожного рівного 0 елемента в А серед m перших елементів вкласти всю послідовність В. Не можна використовувати додатковий масив.

11. Задано цілочисельний масив. Підрахувати число різних значень у масиві.

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

13. Дан одновимірний масив чисел, в якому є позитивні, негативні і нульові елементи. обчислити:

а) кількість елементів рівних нулю, негативних елементів і позитивних елементів;

б) середнє арифметичне додатних елементів;

в) середнє арифметичне додатних елементів, значення яких більше К;

г) суму елементів, що стоять на непарних місцях.

14. Визначте суму елементів масиву, індекс яких ділиться на 3.

15. Зріст учнів у класі представлений у вигляді масиву. Зріст дівчаток кодується знаком "+", а зріст хлопчиків кодується знаком "-". Визначте середній зріст хлопчиків і дівчаток.

16. У масиві А [20] є хоча б одне від'ємне значення елемента:

а) обчислити добуток елементів масиву до першого від'ємного елемента;

б) обчислити суму значень елементів масиву після першого від'ємного значення.

6. Двовимірні масиви

Двовимірний масив в Паскалі трактується як одновимірний масив, тип елементів якого також є масивом (масив масивів). Положення елементів в двовимірних масивах Паскаля описується двома індексами. Їх можна представити у вигляді прямокутної таблиці або матриці.

Розглянемо двовимірний масив розмірністю 3 * 3, тобто в ньому буде три рядки, а в кожному рядку по три елементи:

Кожен елемент має свій номер, як у одновимірних масивів, але номер уже складається з двох чисел - номери рядка, в якому знаходиться елемент, і номери стовпця. Таким чином, номер елемента визначається перетином рядка та стовпця.

Існує кілька способів оголошення двовимірного масиву

Опис двовимірного масиву

Type

Vector = array [1 .. 5] of <тіп_елементов>;

Matrix = array [1 .. 10] of vector;

Var m: matrix;

Двовимірний масив m, що складається з 10 рядків, у кожному з яких 5 стовпців. При цьому до кожного і-ого рядку можна звертатися m [і], а до кожного j-ого елементу всередині і-ого рядка - m[і,j].

Визначення типів для двовимірних масивів можна задавати і в одному рядку:

Type

Matrix= array [1..5] of array [1..10] of < тип элементів >;

або:

type

matrix = array [1..5, 1..10] of <тип элементів>;

Єдину дію, яку можна здійснити над однотипними масивами в цілому - це присвоювання. Тобто, якщо в програмі у нас описані дві матриці одного типу, наприклад,

Type

matrix = array [1 .. 5, 1 .. 10] of integer;

Var

a, b: matrix;

то в ході виконання програми можна присвоїти матриці a значення матриці b (a: = b). Всі інші дії виконуються поелементно, при цьому над елементами можна виконувати всі допустимі операції, які визначені для типу даних елементів масиву. Це означає, що якщо масив складається з цілих чисел, то над його елементами можна виконувати операції, визначені для цілих чисел, якщо ж масив складається із символів, то до них застосовні операції, визначені для роботи з символами.

Введення двовимірного масиву.

Для послідовного введення елементів одновимірного масиву ми використовували цикл for, в якому змінювали значення індексу з 1-го до останнього. Але положення елемента в двовимірному масиві визначається двома індексами: номером рядка та номером стовпця. Це означає, що потрібно послідовно змінювати номер рядки з 1-ї до останнього і в кожному рядку перебирати елементи стовпців з 1-го до останнього. Значить, нам буде потрібно два цикли for, причому один з них буде вкладений в інший.

Приклад програми введення двовимірного масиву з клавіатури

type

matrix= array [1..5, 1..10] of integer;

Var

a, : matrix;

і, j: integer; { індекси масива }

begin

for і :=1 to 5 do {цикл для перебирання всіх рядків}

for j :=1 to 10 do {перебирання всіх элементів рядка по стовпцям}

readln ( a [ і , j ]); {введення з клавіатуриы елементу, який знаходиться в і -ому рядку і j -ому стовпбці}

Двовимірний масив можна заповнити випадковим чином, тобто використовувати функцію random(N).

Виведення двовимірного масиву на екран.

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

Приклад програми виведення двовимірного масиву

for і :=1 to 5 do { цикл для перебирання всіх рядків}

begin

for j :=1 to 10 do {перебирання всіх элементів рядка по стовпцям}

write ( a [ і , j ]:4); {друк елементів, якізнаходяться в і -ому рядку матриці в одному екранному рядку, при цьому для виведення кажного елемента відводиться 4 позиції}

writeln ; {перед тим, як змінити номер рядка в матриці, необхідно перевести курсор на початок нового екранного рядка}

end ;

Задача 1

Створити рейтинг учнів класу, використавши для цього двовимірний масив.

Program Reit_kl;

Uses Crt;

Const n=6;m=5;

Var

Ocinka:array[1..n,1..m] of integer;

reit:array[1..n] of real;

sum_bal,sum_pred,і,j,k:integer;

ser_pred:array[1..m] of real;

t:real;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

for j:=1 to m do

readln(Ocinka[І,j]);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(Ocinka[І,j]:5);

writeln;

end;

end;

Begin

clrscr;

vvod;

vuvod;

for і:=1 to n do

begin

Sum_bal:=0;

for j:=1 to m do

sum_bal:=sum_bal+ocinka[і,j];

reit[і]:=sum_bal/m;

end;

for і:=1 to n do

writeln( і,' ychen: ',reit[і]:3:2);

for j:=1 to m do

begin

Sum_pred:=0;

for і:=1 to n do

sum_pred:=sum_pred+ocinka[і,j];

Ser_pred[j]:=sum_pred/n;

end;

writeln;

for j:=1 to m do

writeln( j,' predmet: ',Ser_pred[j]:3:2);

writeln;

k:=0;

for і:=1 to n-1 do

begin

і:=n;

reit[і]:=reit[n];

while і>k+1 do

begin

if reit[і]>reit[і-1] then

begin

t:=reit[і-1];

reit[і-1]:=reit[і];

reit[і]:=t

end; ;

і:=і-1;

end;

k:=k+1;

end;

for і:=1 to n do

writeln( і,' ychen: ',reit[і]:3:2);

writeln;

k:=0;

for j:=1 to m-1 do

begin

j:=m;

ser_pred[j]:=Ser_pred[m];

while j>k+1 do

begin

if ser_pred[j]>ser_pred[j-1] then

begin

t:=ser_pred[j-1];

ser_pred[j-1]:=ser_pred[j];

ser_pred[j]:=t

end;

j:=j-1;

end;

k:=k+1;

end;

writeln;

for j:=1 to m do

writeln( j,' predmet: ',Ser_pred[j]:3:2);

readln;

End.

Задача 2

Заповніть двовимірний масив T[1..10,1..8] за формулою: T[і,j]=i2+3*j3. Виведіть заповнений массив на екран.

Program zapov;

Uses Crt;

Const

n=10;

m=8;

Var

T:array[1..n,1..m] of integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

for j:=1 to m do

T[І,j]:=sqr(і)+3*j*sqr(j);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(T[І,j]:5);

writeln;

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

readln;

End.

Задача 3

Дано масив А[1..n,1..m], значеннями елементів якого є випадкові дійсні числа. Сформуйте одновимірний масив В, елементами якого є суми елементів кожного стовпця двовимірного масиву. Виведіть елементи массив А та В на екран.

Program zapov;

Uses Crt;

Const

n=10;

m=8;

Var

A:array[1..n,1..m] of real;

B:array[1..m] of real;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[І,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[І,j]:5:1);

writeln;

end;

end;

Procedure vuvod1;

Var j:1..m;

begin

for j:=1 to m do

begin

write(B[j]:5:1);

end;

end;

Procedure Syma_stovp;

Var

і:1..n;

j:1..m;

begin

for j:=1 to m do

begin

B[j]:=0;

for і:=1 to n do

B[j]:=B[j]+A[і,j];

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

Syma_stovp;

Vuvod1;

readln;

End.

Задача 4

Дано масив C[1..n,1..m], цілих чисел. Помножте кожний елемент першого рядка, включаючи перший, на С[1,1], кожний елемент другого рядка - на C[2,2] тощою Початковий та змінений масиви виведіть на екран.

Program zapov;

Uses Crt;

Const

n=5;

m=4;

Var

С:array[1..n,1..m] of integer;

B:array[1..n,1..m] jf integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

for j:=1 to m do

begin

Writeln(`C[`,і,',',j,']');

Readln(C[і,j];

end;

end;

Procedure vuvod(A:array of integer);

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5);

writeln;

end;

end;

Procedure Dobytok;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

B[І,j]:=C[і,j]*C[і,1];

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod(C);

writeln;

dobytok;

vuvod(B);

readln;

End.

Задача 5

Дано масив C[1..n,1..m], цілих чисел. Помножте кожний елемент першого рядка, включаючи перший, на С[1,1], кожний елемент другого рядка - на C[2,2] тощою Початковий та змінений масиви виведіть на екран.

Program zapov;

Uses Crt;

Const

n=5;

m=4;

Var

C:array[1..n,1..m] of integer;

B:array[1..n,1..m] of integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

for j:=1 to m do

begin

Writeln('C[',і,',',j,']');

Readln(C[і,j]);

end;

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(C[і,j]:5);

writeln;

end;

end;

Procedure vuvod1;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(B[і,j]:5);

writeln;

end;

end;

Procedure Dobytok;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

B[І,j]:=C[і,j]*C[і,1];

end;

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

dobytok;

vuvod1;

readln;

End.

Задача 6

Дано двовимірний масив А[1..n,1..m], дійсних чисел. Визначити:

1. Суму елементів k-го стовпця;

2. Добуток елементів С-го рядка;

3. Добуток елементів, розміщених у непарних стовпцях;

4. Суму елементів, розміщених у парних рядках;

5. Найбільший та найменший елементи масиву та значення їх індексів;

6. Номер рядка, сума елементів якого є найменшою;

7. Номер стовпця, у якому розміщено найбільше число від'ємних елементів масиву;

8. Номер рядка, середнє арифметичне значення елементів якого більше заданого числа Х;

9. Номер стовпця, у якому всі елементи діляться без остачі на число У.

Program z_6_1;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

S:real;k:integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5:1);

writeln;

end;

end; Procedure Syma;

Var

і:1..n;

j:1..m;

begin

s:=0;

for і:=1 to n do

begin

j:=k;

S:=S+A[і,k];

End;

Writeln(`S=',s:4:1);

End;

Begin

clrscr;

Write(`k=');

Readln(k);

vvod;

writeln;

vuvod;

writeln;

Syma;

readln;

End.

Program z_6_2;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

D:real;c:integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5:1);

writeln;

end;

end;

Procedure Dobytok;

Var

і:1..n;

j:1..m;

begin

D:=1;

for j:=1 to m do

begin

і:=c;

D:=D*A[c,j];

end;

Writeln(`D=',d:4:1);

end;

Begin

clrscr;

Write(`c=');

Readln(c);

vvod;

writeln;

vuvod;

writeln;

Dobytok;

readln;

End.

Program z_6_3;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

d:real;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5:1);

writeln;

end;

end;

Procedure Dobytok;

Var

і:1..n;

j:1..m;

begin

D:=1;

for і:=1 to n do

begin

for j:=1 to m do

begin

if (j mod 2)<>0 then

D:=D*A[і,j];

end;

end;

Writeln(`D=',d:4:1);

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

Dobytok;

readln;

End.

Program z_6_4;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

S:real;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5:1);

writeln;

end;

end;

Procedure Syma;

Var

і:1..n;

j:1..m;

begin

S:=0;

for j:=1 to m do

begin

for і:=1 to n do

begin

if (і mod 2)=0 then

S:=S+A[і,j];

end;

end;

Writeln(`S=',s:4:1);

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

Syma;

readln;

End.

Program z_6_5;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

max,min:real;max_і,max_j,min_і,min_j:integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5:1);

writeln;

end;

end;

Procedure maximym;

Var

і:1..n;

j:1..m;

begin

max:=A[1,1];

max_і:=1;

max_j:=1;

for і:=1 to n do

begin

for j:=1 to m do

begin

if A[І,j]>max then

begin

max:=A[І,j];

max_і:=і;

max_j:=j;

end;

end;

end;

Writeln('Max=',max:4:1);

Writeln('N_max=',max_і,',',max_j);

end;

Procedure minimym;

Var

і:1..n;

j:1..m;

begin

min:=A[1,1];

min_і:=1;

min_j:=1;

for і:=1 to n do

begin

for j:=1 to m do

begin

if A[І,j]<min then

begin

min:=A[І,j];

min_і:=і;

min_j:=j;

end;

end;

end;

Writeln('Min=',min:4:1);

Writeln('N_min=',min_і,',',min_j);

end;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

maximym;

Minimym;

readln;

End.

Program z_6_6;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

K:array[1..n] of real;

S,S_min:real; n_min_r,і,j:integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

Randomize;

for і:=1 to n do

for j:=1 to m do

A[і,j]:=random(20);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[і,j]:5:1);

writeln;

end;

end;

Begin

clrscr;

vvod;

vuvod;

writeln;

for і:=1 to n do

begin

S:=0;

for j:=1 to m do

begin

s:=s +A[і,j];

K[і]:=s;

end;

end;

for і:=1 to n do

write(K[і]:5:1);

writeln;

S_min:=K[1];

N_min_r:=1;

for і:=1 to n do

if K[і]<S_min then

begin

S_min:=K[і];

N_min_r:=І;

end;

Writeln('Nomer ryadka z min sum elementiv=>',n_min_r);

readln;

End.

Program z_6_7;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

K:array[1..m] of integer;

Kv,Kv_max,n_max_s,і,j:integer;

Procedure vvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

for j:=1 to m do

readln(A[І,j]);

end;

Procedure vuvod;

Var

і:1..n;

j:1..m;

begin

for і:=1 to n do

begin

for j:=1 to m do

write(A[І,j]:5:1);

writeln;

end;

end;

Begin

clrscr;

vvod;

vuvod;

writeln;

for j:=1 to m do

begin

Kv:=0;

for і:=1 to n do

begin

If A[І,j]<0 then

Kv:=kv+1;

end;

K[j]:=kv;

end;

for j:=1 to m do

write(K[j]:5);

writeln;

Kv_max:=K[1];

N_max_s:=1;

for j:=1 to m do

if K[j]>Kv_max then

begin

Kv_max:=K[j];

N_max_s:=j;

end;

Writeln('Nomer stovpzya z max kil videmnux elementiv=>',n_max_s);

readln;

End.

Program z_6_8;

Uses Crt;

Const

n=5;

m=4;

Var

A:array[1..n,1..m] of real;

K:array[1..n] of rea...


Подобные документы

  • Алгоритми розв’язання задач у вигляді блок–схем. Використання мови програмування MS VisualBasic for Application для написання програм у ході вирішення задач на одномірний, двовимірний масив, порядок розв’язання задачі на використання символьних величин.

    контрольная работа [742,9 K], добавлен 27.04.2010

  • Вирішення задач сортування в програмуванні та розробка ефективних алгоритмів сортування. Знайомство з теоретичним положенням, що стосуються методів сортування файлів, реалізації їх на мові програмування Turbo Pascal. Методи злиття впорядкованих серій.

    курсовая работа [46,9 K], добавлен 16.09.2010

  • Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.

    курсовая работа [232,2 K], добавлен 12.02.2013

  • Загальні відомості про процедури та функції. Характеристика, особливості і можливості мови Pascal, її використання для розробки наочних, компактних, структурованих програм, створення умов для систематичного і цілеспрямованого процесу програмування.

    реферат [30,0 K], добавлен 13.11.2010

  • Методика та порядок програмування алгоритмів циклічної структури із заданим числом повторень за допомогою мови програмування VAB. Алгоритм роботи з одновимірними масивами. Програмування алгоритмів із структурою вкладених циклів, обробка матриць.

    курсовая работа [27,7 K], добавлен 03.04.2009

  • Теоретичні аспекти програмування мовою Pascal. Основні поняття та елементи мови. Розділи оголошення сталих і змінних. Стандартні та нестандартні типи даних. Основні операції, стандартні функції та процедури, прості програми. Розгалуження, цикли, масиви.

    курсовая работа [122,5 K], добавлен 21.10.2012

  • Основні переваги програмування на мові Delphi. Використання стандартних операторів при створенні інтерфейсу користувача. Вибір складу технічних і програмних засобів, організація вхідних і вихідних даних. Розробка програми, блок-схеми та тексту програми.

    реферат [316,1 K], добавлен 22.01.2013

  • BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.

    курсовая работа [325,8 K], добавлен 12.06.2011

  • Застосування циклічних алгоритмів для створення циклів за допомогою умовного або безумовного переходів. Цикли з параметром та умовою (приклади). Використання операторів мови програмування Паскаль для організації повторюваних послідовностей дій (циклів).

    контрольная работа [435,9 K], добавлен 02.06.2012

  • Побудова блок-схем алгоритмів програм. Створення блок схем алгоритмів за допомогою FCEditor. Експорт блок-схеми в графічний файл. Огляд програмних та апаратних засобів. Мови програмування високого рівня. Цикли та умовний оператор IF з лічильником.

    дипломная работа [1,4 M], добавлен 15.12.2013

  • Стандартні розміри чисел при програмуванні на мові Асемблера. Робота з дробовими числами, використання математичного сопроцесора або його емулятора. Створення програми, яка б перетворювала ціле число в дробове і навпаки, а також функції [x], {x}, |X|.

    курсовая работа [22,0 K], добавлен 12.08.2009

  • Поняття процедури, її призначення, форма запису, складові частини. Звернення до процедури, формальні параметри та фактичні аргументи, відповідність. Модулі користувача, їх призначення, структура запису, складові частини, підключення модулів до програми.

    контрольная работа [587,3 K], добавлен 21.04.2011

  • Розв’язок багатокритеріальної задачі лінійного програмування з отриманням компромісного рішення (для задач з кількома функціями мети) за допомогою теоретико-ігрового підходу. Матриця мір неоптимальності та рядок функції мети. Модуль опису класу.

    курсовая работа [588,8 K], добавлен 15.05.2011

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Програми і мови програмування. Алфавіт мови програмування. Лексеми, зарезервовані слова мови Pascal. Ідентифікатори, типи даних. Арифметичні вирази, операції. Стандартні функції, структура програми. Процедури введення-виведення. Правила написання команд.

    лекция [445,0 K], добавлен 24.07.2014

  • Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.

    курсовая работа [11,0 K], добавлен 08.08.2009

  • Коректне використання операторів та конструкцій, побудова ефективних алгоритмів для розв'язку типових задач. Розробка алгоритмів та програми для створення бази даних телефонних номерів. Використання засобів розробки програмного забезпечення мовою Java.

    курсовая работа [1,0 M], добавлен 25.01.2016

  • Лінійне програмування як один з найбільш популярних апаратів математичної теорії оптимального управління рішень. Опис існуючих методів розв’язку задач лінійного програмування. Завдання, основні принципи, алгоритми і головна мета лінійного програмування.

    курсовая работа [363,8 K], добавлен 03.12.2009

  • Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.

    курсовая работа [1,1 M], добавлен 14.09.2012

  • Використання ітерацій для обчислення приблизних значень величин. Розробка ітераційних алгоритмів з перевіркою правильності введення даних. Побудова блок-схеми і програмування мовою Turbo Pascal обчислення значення функції, розкладеної в степеневий ряд.

    лабораторная работа [197,2 K], добавлен 16.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.