Розв’язок задач на мові програмування 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.2013BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних 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