Розв’язок задач на мові програмування Pascal
Розробка програмних засобів в професійному програмуванні. Використання простих і гнучких структур розгалужень, циклів. Фундаментальні ідеї алгоритмів. Стандартні функції і процедури. Алгоритми з розгалуженням. Загальна форма запису циклу з лічильником.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | украинский |
Дата добавления | 15.12.2012 |
Размер файла | 227,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Uses Crt;
Const n=4;
Type MAS=array[1..n] of array[1..n] of real;
Var
A:MAS;
B:MAS;
Sa,Sb:real;
i,j:integer;
Procedure zapovn(Var A:MAS);
Var
і,j:integer;
begin
Randomize;
for і:=1 to n do
for j:=1 to n do
begin
A[і,j]:=Random(80);
end;
end;
Procedure vuvod(Var A:MAS);
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:5:1);
Writeln;
end;
end;
Begin
ClrScr;
Randomize;
Zapovn(A);
Randomize;
Zapovn(B);
Vuvod(A);
Writeln;
Vuvod(B);
Writeln;
Sa:=0;
For і:=1 to n do
For j:=1 to n do
begin
If і=j then
Sa:=Sa+A[І,j];
end;
Write('Sa=',Sa:4:1);
writeln;
Sb:=0;
For і:=1 to n do
For j:=1 to n do
begin
If і=j then
Sb:=Sb+B[І,j];
end;
Write('Sb=',Sb:4:1);
writeln;
If Sa>Sb then
Writeln('Matruzya A mae bilshuj slid')
Else
Writeln('Matruzya B mae bilshuj slid');
ReadLn;
End.
Задача 11
Дано цілочислову матрицю порядка n.
1. Необхідно визначити номери рядків, значення всіх елементів яких дорівнюють 0;
2. Необхідно визначити номери рядків, що складаються з однакових елементів;
3. Необхідно визначити номери рядків, значення всіх елементів яких є парними числами;
4. Необхідно визначити номери рядків, значення всіх елементів яких є простими числами.
Program z_11_1;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n] of integer;
i,j,f,m:integer;
Procedure zapovn;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:4);
Writeln;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
f:=0;
For і:=1 to n do
begin
m:=0;
For j:=1 to n do
begin
If A[І,j]=0 then m:=m+1;
end;
if m<>n then f:=f+1
else writeln('Ryadok ',І,' mae nylovi znachennya vsix elementiv');
end;
If f=n then
writeln('Matruzya ne mae ryadkiv z nylovumu znachennyamu vsix elementiv');
ReadLn;
End.
Program z_11_2;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n]of integer;
i,j,f,m:integer;
Procedure zapovn;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:4);
Writeln;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
f:=0;
For і:=1 to n do
begin
m:=0;
For j:=1 to n-1 do
begin
If A[І,j]=A[І,j+1] then
m:=m+1;
end;
if m=n-1 then
writeln('Ryadok ',І,' mae odunakovi znachennya vsix elementiv')
else f:=f+1;
end;
If f=n then
writeln('Matruzya ne mae ryadkiv z odunakovumu znachennyamu vsix elementiv');
ReadLn;
End.
Program z_11_3;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n]of integer;
i,j,f,m:integer;
Procedure zapovn;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:4);
Writeln;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
f:=0;
For і:=1 to n do
begin
m:=0;
For j:=1 to n do
begin
If (A[І,j] mod 2)=0 then
m:=m+1;
end;
if m=n then
writeln('Ryadok ',І,' mae parni znachennya vsix elementiv')
else f:=f+1;
end;
If f=n then
writeln('Matruzya ne mae ryadkiv z parnumu znachennyamu vsix elementiv');
ReadLn;
End.
Program z_11_4;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n]of integer;
i,j,f,m,x,c:integer;k:boolean;
Procedure zapovn;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:4);
Writeln;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
f:=0;
For і:=1 to n do
begin
m:=0;
For j:=1 to n do
begin
X:=trunc(sqrt(A[І,j]));
K:=false;
c:=2;
while(c<=x) and (not k) do
begin
if (A[І,j] mod c)=0 then
k:=true;
c:=c+1
end;
If not k then
m:=m+1;
end;
if m=n then
writeln('Ryadok ',І,' mae znachennya vsix elementiv - prosti chusla')
else f:=f+1;
end;
If f=n then
writeln('Matruzya ne mae ryadkiv zi znachennyamu vsix elementiv -
prostumu chuslamu');
ReadLn;
End.
Задача 12
Таблиця футбольного чемпіонату подано у вигляді матриці порядка n. Усі елементи її головної діагоналі дорівнюють нулю, а всі інші елементи дорівнюють:
· 2, якщо команда виграла гру;
· 1, якщо гра закінчилась нічиєю;
· 0, у разі програшу команди;
Необхідно визначити:
1. Кількість виграшів та програшів кожної команди;
2. Номери команд, що зіграли всі ігри чемпіонату без жодної поразки;
3. Кількість команд, що мають у чемпіонаті перемог більше, ніж поразок;
4. Номери команд, що виграли більше половини ігор.
Program futbol;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n]of integer;
iІ,j,Kp,Kv,Nkv,Nkper,Nkvug:integer;
Procedure zapovn;
begin
Randomize;
for і:=1 to n do
for j:=1 to n do
begin
if і=j then
A[І,j]:=0
Else A[І,j]:=random(3);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]);
Writeln;
end;
end;
Procedure progr_vugr;
begin
Kp:=0;
Kv:=0;
for і:=1 to n do
begin
for j:=1 to n do
begin
if A[І,j]=2 then
Kv:=Kv+1;
if (A[І,j]=0)and(і<>j) then
Kp:=Kp+1;
end;
Writeln('Komanda ',І,' vugrala ',Kv,', prograla ',Kp);
writeln;
kv:=0;
kp:=0;
end;
end;
Procedure bez_porazok;
begin
kv:=0;
for і:=1 to n do
begin
for j:=1 to n do
begin
if (A[і,j]<>0)and(І<>j) then
Kv:=Kv+1;
end;
if kv=n-1 then
Writeln('Komanda ',І,' zigrala bez porazok');
writeln;
kv:=0;
end;
end;
Procedure kil_kom;
begin
Kp:=0;
Kv:=0;
Nkv:=0;
for і:=1 to n do
begin
for j:=1 to n do
begin
if A[І,j]=2 then
Kv:=Kv+1;
if (A[І,j]=0)and(і<>j) then
Kp:=Kp+1;
end;
if kv>kp then Nkv:=Nkv+1;
kv:=0;
kp:=0;
end;
Writeln(Nkv,' Komand majt peremog bilshe nigh porazok');
writeln;
end;
Procedure nkom_v_b;
begin
kv:=0;
for і:=1 to n do
begin
for j:=1 to n do
begin
if A[і,j]=2 then
Kv:=Kv+1;
end;
if (kv>(n div 2)) then
Writeln('Komanda ',І,' vugrala bilshe polovunu igor');
writeln;
kv:=0;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
progr_vugr;
bez_porazok;
kil_kom;
nkom_v_b;
ReadLn;
End.
Задача 13
У матриці A[1..n,1..n], елементи якої є цілими числами, у кожному рядку необхідно знайти максимальний елемент і помінть його місцями з елементом головної діагоналі матриці, розміщеним у цьому ж рядку.
Program Matr_perest;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n]of integer;
Max,N_maxi,N_maxj,і,j,t:integer;
Procedure zapovn;
begin
Randomize;
for і:=1 to n do
for j:=1 to n do
begin
A[І,j]:=random(20);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:3);
Writeln;
end;
end;
Procedure perestanovka;
begin
for і:=1 to n do
begin
Max:=A[І,1];
for j:=1 to n do
begin
if A[І,j]>Max then
begin
Max:=A[І,j];
N_maxi:=І;
N_maxj:=j;
end;
end;
for j:=1 to n do
begin
if j=і then
begin
t:=A[і,j];
A[І,j]:=Max;
end;
end;
for j:=1 to n do
begin
A[N_maxi,N_maxj]:=T;
end
N_maxj:=1;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
Perestanovka;
vuvod;
ReadLn;
End.
Задача 14
Для заданої матриці порядку n, визначте діагональ, паралельну головній діагоналі матриці, сума елементів якої має максимальне значення.
Program Matr_max_diag;
Uses Crt;
Const n=5;
Var
A:array[1..n,1..n]of integer;
Max,Sgl,Sd,і,j,t:integer;
Procedure zapovn;
begin
Randomize;
for і:=1 to n do
for j:=1 to n do
begin
A[І,j]:=random(20);
end;
end;
Procedure vuvod;
begin
For і:=1 to n do
begin
For j:=1 to n do
Write(A[І,j]:3);
Writeln;
end;
end;
Procedure Suma_glav;
begin
Sgl:=0;
for і:=1 to n do
for j:=1 to n do
begin
if і=j then
Sgl:=Sgl+A[І,j];
end;
end;
Procedure Suma_d_vg;
begin
Sd:=0;
j:=1+t;
While j<=n do
begin
і:=j-1;
Sd:=Sd+A[І,j];
j:=j+1;
end;
end;
Procedure Suma_d_ng;
begin
Sd:=0;
і:=1+t;
While і<=n do
begin
j:=і-1;
Sd:=Sd+A[І,j];
і:=і+1;
end;
end;
Begin
ClrScr;
Zapovn;
Writeln;
Vuvod;
Writeln;
Suma_glav;
Max:=Sgl;
For t:=1 to n do
begin
Suma_d_vg;
If Sd>max then
Max:=Sd;
end;
For t:=1 to n do
begin
Suma_d_ng;
If Sd>max then
Max:=Sd;
end;
Writeln('Max syma elementiv diagonali paralelnoj golovnij =',max);
ReadLn;
End.
Задача 15
Дан двовимірний масив, який має n рядків, в яких зберігаються кількість різних видів деталей, і 12 стовпців, відповідно місяцям року. Необхідно визначити:
1. Кількість деталей кожного виду, вироблених за рік;
2. Загальну кількість деталей вироблених за k-тий місяць;
3. Номер місяця, коли було вироблено максимальну кількість деталей m-того виду;
4. Загальна кількість деталей вироблених за рік.
Program vurobn;
Uses Crt;
Const
n=5;
m=12;
Var
A:array[1..n,1..m] of integer;
S1,S2,S3,S4,S5,Sst,c1,c2,c3,c4,c5,k,m1,max,N_max,S: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(90);
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);
writeln;
end;
end;
Procedure Suma_ryadka(c:integer;Var S:integer);
Var
і:1..n;
j:1..m;
begin
S:=0;
for j:=1 to m do
begin
і:=c;
S:=S+A[c,j];
end;
Writeln('S=',S);
end;
Procedure Syma_stovpzya;
Var
і:1..n;
j:1..m;
begin
Sst:=0;
for і:=1 to n do
begin
j:=k;
Sst:=Sst+A[і,k];
end;
Writeln('Sst=',Sst);
end;
Procedure maximym;
Var
і:1..n;
j:1..m;
begin
max:=A[m1,1];
N_max:=1;
for j:=1 to m do
begin
if A[m1,j]>max then
begin
max:=A[m1,j];
N_max:=j;
end;
end;
Writeln('N_misyazya=',N_max);
end;
Procedure Syma;
Var
і:1..n;
j:1..m;
begin
S:=0;
for і:=1 to n do
for j:=1 to m do
S:=S+A[І,j];
Writeln('Vurobleno za rik ',S);
end;
Begin
clrscr;
vvod;
writeln;
vuvod;
writeln;
C1:=1;
Suma_ryadka(c1,S1);
C2:=2;
Suma_ryadka(c2,S2);
C3:=3;
Suma_ryadka(c3,S3);
C4:=4;
Suma_ryadka(c4,S4);
C5:=5;
Suma_ryadka(c5,S5);
Write('k=');
Readln(k);
Syma_stovpzya;
Write('m1=');
Readln(m1);
maximym;
Syma;
readln;
End.
Задача 16
Елемент двовимірного масивуA[1..n,1..m] називають сідловою точкою, якщо він є найменшим у своєму рядку та одночасно найбільшим у своєму стовпці. Для заданого масиву дійсних чисел, усі елементи якого мають різні значення, визначити індекси його сідловин точок.
Program sidlo;
Uses Crt
Const n=4;m=5;
Var
A:array[1..n,1..m] of real;
min,max:real;І,j,min_і, min_j,max_і,max_j,k:integer;
Procedure vvod;
begin
for j:=1 to m do
begin
write('A[',і,',',j,']=');
readln(A[і,j]);
end;
end;
Procedure vuvod;
begin
for і:=1 to n do
begin
for j:=1 to m do
write(A[і,j]:5:1);
writeln;
end;
end;
Begin
clrscr;
vvod;
writeln;
vuvod;
writeln;
j:=1;
for j:=1 to m do
begin
max:=A[1,j];
max_і:=1;
max_j:=j;
for і:=1 to n do
begin
if A[І,j]>max then
begin
max:=A[І,j];
max_і:=І;
max_j:=j;
end;
end;
k:=j;
min:=A[max_і,1];
min_j:=1;
і:=max_і;
for j:=1 to m do
begin
if A[і,j]<min then
begin
min:=A[І,j];
min_і:=І;
min_j:=j;
end;
end;
if (max_і=min_і)and(max_j=min_j) then
Write('Indeksu sidlovoj tochku: ',max_і,',',max_j);
j:=k;
end;
readln;
End.
Задача 17
Відстанню між рядками називають суму добутків відповідних елементів рядків. Для двовимірного масиву A[1..n,1..m] знайти номери двох рядків, відстань між якими максимальна, та значення цієї максимальної відстані.
Program vidctan_ryad;
Uses Crt;
Const
n=4;
m=5;
Var
A:array[1..n,1..m] of integer;
S_D:array[1..n-1] of integer;
max,І,j,l,max_і:integer;
Procedure vvod;
begin
for і:=1 to n do
for j:=1 to m do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
for і:=1 to n do
begin
for j:=1 to m do
write(A[і,j]:5);
writeln;
end;
end;
Begin
clrscr;
vvod;
writeln;
vuvod;
writeln;
for і:=1 to n-1 do
begin
S_D[і]:=0;
For j:=1 to m do
S_D[і]:=S_D[і]+A[І,j]*A[і+1,j];
Write(S_D[і]:5);
end;
writeln;
max:=S_D[1];
max_і:=1;
for і:=1 to n-1 do
begin
if S_D[і]>max then
begin
max:=S_D[і];
max_і:=і;
end;
end;
Writeln('Max vidstan - ',max,' - ',max_і);
readln;
End.
Задача 19
Характиристикою стовпця матриці порядка n є сума модулів його від'ємних елементів. Для заданої матриці A[1..n,1..n] елементами якої є дійсні числа, визначити характеристики кожного стовпця. Перемістити стовпці так, щоб вони розміщувались за зростанням характеристик. Вивести на екран змінену матрицю, указавши під кожним стовпцем його характеристику.
Program character_stovp;
Uses Crt;
Const
n=4;
m=5;
Var
A:array[1..n,1..n] of real;
B:array[1..m,1..n] of real;
Min,T:real;І,j,Nmin,k:integer;
Procedure vvod;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
for і:=1 to n do
begin
for j:=1 to n do
write(A[і,j]:6:2);
writeln;
end;
end;
Begin
Clrscr;
vvod;
writeln;
vuvod;
writeln;
for j:=1 to n do
begin
B[m,j]:=0;
for і:=1 to n do
begin
B[і,j]:=A[і,j];
if A[І,j]<0 then
B[m,j]:=B[m,j]+abs(A[І,j]);
end;
end;
for і:=1 to m do
begin
for j:=1 to n do
write(B[і,j]:6:2);
writeln;
end;
writeln;
j:=1;
while j<n do
begin
min:=B[m,j];
Nmin:=j;
for k:=j+1 to n do
if B[m,k]<min then
begin
min:=B[m,k];
Nmin:=k
end;
for і:=1 to m do
begin
t:=B[і,j];
B[і,j]:=B[і,Nmin];
B[і,Nmin]:=t;
end;
j:=j+1
end;
for і:=1 to m do
begin
for j:=1 to n do
write(B[і,j]:6:2);
writeln;
end;
readln;
End.
Задача 20
Визначити, чи симетрична відносно головної діагоналі матриця A порядка n, елементи якої є цілі числа.
Program Sumetr_Matriza;
Uses crt;
Const n =4 ;
Var
A:array [ 1..n,1..n ] of integer;
і,j:integer;
f:boolean;
Procedure vvod;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
for і:=1 to n do
begin
for j:=1 to n do
write(A[і,j]:4);
writeln;
end;
end;
Begin
Clrscr;
vvod;
writeln;
vuvod;
writeln;
f:=false;
for і:=1 to n-1 do
for j:=і+1 to n do
begin
if A[і,j]=A[j,і] then
f:=true
else f:=false;
end;
if f then
WriteLn( 'Matrizja cumetruchna vidnosno golovnoj diagonali' )
else WriteLn( 'Matrizja necumetruchna vidnosno golovnoj diagonali' );
readln;
End.
Задача 21
На прямокутному ігровому полі розміром n x m , розбитому на клітинки, розміщено кутики - смужки довільної довжини, шириною в одну клітинку, зігнуті в довільному місці на кут 900. Кутики ніде не дотикаються та не накладаються один на одного. Інформацію про розміщення кутиків задано цілочисловим масивом K[1..n,1..m], у якому значення елемента дорівнює:
· 1, якщо клітинка входить до деякого кутика;
· 0, якщо клітинка не входить до кутика.
Необхідно визначити кількість кутиків на ігровому полі.
Program kytuku;
Uses Crt;
Const
n =5 ;
m=5;
Var
A:array [ 1..n,1..m ] of integer;
і,j,c,k:integer;
Procedure scolor(x,y,c:integer);
begin
A[x,y]:=c;
If (x>0)and(A[x-1,y]=1) then
scolor(x-1,y,c);
If (y>0)and(A[x,y-1]=1) then
scolor(x,y-1,c);
If (x<n)and(A[x+1,y]=1) then
scolor(x+1,y,c);
If (y<m)and(A[x,y+1]=1) then
scolor(x,y+1,c);
end;
Begin
ClrScr;
for і:=1 to n do
for j:=1 to m do
begin
write('A[',і,',',j,']=');
readln(A[і,j]);
end;
c:=1;
for і:=1 to n do
for j:=1 to m do
if A[і,j]=1 then
begin
c:=c+1;
scolor(і,j,c);
end;
WriteLn( 'kytukiv na poli => ',c-1 );
for і:=1 to n do
begin
for j:=1 to m do
begin
write (A[і,j]:4);
end;
writeln;
end;
readln;
End.
Задача 22
Латинським квадратом називається матриця порядка n, кожний рядок та кожний стовпець якої містить усі натуральні числа від 1 до n. Необхідно перевірити чи є даний масив A[1..n,1..n] латинським квадратом.
Program lat_kvadrat;
Uses CRT;
Const n=5;
Var
A:array[1..n,1..n]of integer;
і,j:integer;
f,f1:boolean;
Procedure vvod;
begin
for і:=1 to n do
for j:=1 to n do
begin
write('A[',І,',',j,']=');
readln(A[І,j]);
end;
end;
Procedure vuvod;
begin
for і:=1 to n do
begin
for j:=1 to n do
write(A[і,j]:4);
writeln;
end;
end;
Procedure Findstr(x,znach:integer);
Var
k:integer;
begin
For k:=x to n do
If A[і,k]=znach then
begin
f:=true;
end;
end;
Procedure Findcol(y,znach:integer);
Var
k:integer;
begin
For k:=y to n do
If A[k,j]=znach then
begin
f:=true;
end;
end;
Begin
Clrscr;
vvod;
writeln;
vuvod;
writeln;
f:=false;
f1:=false;
For і:=1 to n-1 do
For j:=1 to n-1 do
begin
Findstr(j+1,A[і,j]);
if f=true then f1:=false
else f1:=true;
Findcol(і+1,A[і,j]);
if f=true then f1:=false
else f1:=true;
end;
if f1=true then
writeln('yes, matruzja - latunskuj kvadrat')
else
writeln('No, matruzja - ne latunskuj kvadrat');
readln;
End.
Задача 23.1
Необхідно визначити та вивести на екран перші 10 рядків трикутника Паскаля. У першому рядку трикутника Паскаля записується 1, крайніми елементами кожного наступного рядка також будуть одиниці. Значення будь-якого іншого елемента рядка дорівнює сумі значень сусідніх елементів попереднього рядка. Кількість елементів в рядку визначається його номером.
Program Paskal_Truk;
Uses CRT;
Const
n=10;
m=19;
Var
A:array[1..n,1..m] of integer;
і,j,Summa:integer;
Begin
Clrscr;
For j:=1 to m do
if j=n then a[1,j]:=1
else A[1,j]:=0;
For і:=2 to n do
for j:=1 to m do
begin
Summa := 0;
if (j>1) and (j<m) then Summa:=A[і-1,j-1]+A[і-1,j+1];
if (j=n-і+1)or(j=n+і-1)then A[і,j]:=1
else A[і,j]:=Summa;
end;
For і:=1 to n do
begin
For j:=1 to m do
Write(A[І,j]:5);
Writeln;
writeln;
end;
End.
Задача 23.2
Необхідно визначити та вивести на екран перші 16 рядків трикутника Бернуллі-Ейлера. У нульовий рядок цього трикутника записується 1. Кожний непарний рядок заповнюється справа: у кожній позиції записується сума всіх елементів попереднього рядка, розміщених правіше за цю позицію. Кожний парний рядок заповнюється аналогічно, але зліва.
Program tr_ejlera;
Uses CRT;
Const
n =8 ;
m =15;
Var
A:array[1..n,1..m]of integer;
і,j,s1,s2:integer;
Begin
ClrScr;
і:=1;
for j:=1 to m do
begin
if j=n then
a[і,j]:=1
else
a[і,j]:=0;
end;
for і:=2 to n do
begin
if (і mod 2)=0 then
begin
s1:=0;
for j:=(n+і-1) downto n-і+1 do
begin
if (j mod 2)=0 then
a[і,j]:=0
else
begin
s1:=s1+A[і-1,j+1];
a[і,j]:=s1;
end;
end;
end
else
begin
s2:=0;
for j:=(n-і+1) to n+і-1 do
begin
if (j mod 2)<>0 then
a[і,j]:=0
else
begin
s2:=s2+A[і-1,j-1];
a[і,j]:=s2;
end;
end
end;
end;
For і:=1 to n do
begin
for j:=1 to m do
write(A[і,j]:5);
writeln;
writeln;
end;
readln;
End.
Задача 24
На прямокутному ігровому полі розміром n x m , розбитому на клітинки, розміщено «змію» - неперервну ламану, шириною в одну клітинку, яка може згинатися лише на кут 900. «Змія» ніде себе не перетинає і не дотикається різними часинами, крім, можливо, «головою» до кінця»хвоста». «Змія» може утворювати на ігровому полі замкнутий або розімкнутий контур. Інформацію про розміщення «змії» задано цілочисловим масивом Z[1..n,1..m], у якому значення елемента дорівнює:
· 1, якщо клітинка поля належить»змії»;
· 0, якщо клітинка не зайнята «змією».
Необхідно визначити, чи утворює «змія» замкнутий контур.
Program zmija;
Uses CRT;
Const
n =5 ;
m=5;
Var
A:array [ 1..n,1..m ] of integer;
і,j,c,k,z:integer;
Procedure scolor(x,y,c:integer);
begin
A[x,y]:=c;
If (x>0)and(A[x-1,y]=1) then
scolor(x-1,y,c);
If (y>0)and(A[x,y-1]=1) then
scolor(x,y-1,c);
If (x<n)and(A[x+1,y]=1) then
scolor(x+1,y,c);
If (y<m)and(A[x,y+1]=1) then
scolor(x,y+1,c);
end;
Begin
ClrScr;
for і:=1 to n do
for j:=1 to m do
begin
write('A[',і,',',j,']=');
readln(A[і,j]);
end;
writeln;
for і:=1 to n do
begin
for j:=1 to m do
begin
write (A[і,j]:4);
end;
writeln;
end;
c:=1;
for і:=1 to n do
for j:=1 to m do
if A[і,j]=1 then
begin
c:=c+1;
scolor(і,j,c);
end;
z:=c-1;
writeln;
if z=1 then
WriteLn( 'Zmija ytvorje zamknytuj kontyr')
else
WriteLn( 'Zmija ne ytvorje zamknytuj kontyr');
readln;
End.
Завдання для самостійної роботи
1. Заповніть одновимірний масив добутком елементів рядків заданого двовимірного масиву і виведіть його на екран. Знайдіть суму цих добутків. Використовуйте підпрограми для вирішення кожного завдання.
2. Заповніть одновимірний масив додатними елементами, розташованими на головній діагоналі заданого квадратного масиву. Виведіть отриманий масив на екран і знайдіть добуток елементів. Використовуйте підпрограми для вирішення кожного завдання.
3. Дан двовимірний квадратний масив. Обчислити суму тих його елементів, розташованих на головній діагоналі і вище за неї, які перевершують за величиною всі елементи, розташовані нижче головної діагоналі. Якщо на головній діагоналі і вище неї немає елементів із зазначеними властивістями, то видайте відповідне повідомлення. Використовуйте підпрограми для вирішення кожного завдання.
4. Дан двовимірний квадратний масив. Знайти номери рядків, всі елементи яких дорівнюють нулю. Використовуйте підпрограми для вирішення кожного завдання.
5. Дан двовимірний квадратний масив. Знайти номери рядків, елементи в яких однакові між собою. Використовуйте підпрограми для вирішення кожного завдання.
6. Дан двовимірний квадратний масив. Знайти номери рядків, всі елементи яких парні. Використовуйте підпрограми для вирішення кожного завдання.
7. Скільки в довільному двовимірному масиві міститься різних елементів? Занесіть їх в одновимірний масив і виведіть на екран. Використовуйте підпрограми для вирішення кожного завдання.
8. Заповнити квадратний двовимірний масив таким чином, щоб на головній діагоналі були розташовані числа від N до 1, під головною діагоналлю нулі, а над головною діагоналлю по рядках числа в порядку зростання від заданого. Використовуйте підпрограми для вирішення кожного завдання.
9. Заповнити квадратний двовимірний масив за наступним правилом: елементи головної діагоналі рівні 1, нижче головної діагоналі - 0, а вище - суми індексів. Використовуйте підпрограми для вирішення кожного завдання.
10. Заповніть квадратний масив одиницями в шаховому порядку, починаючи з верхнього лівого кута. Використовуйте підпрограми для вирішення кожного завдання.
11. Заповніть двовимірний масив з клавіатури тільки числами кратними трьом, передбачте захист елементів цього масиву від неправильного введення і знайдіть суму тих елементів масиву, які без залишку діляться на 9. Використовуйте підпрограми для вирішення кожного завдання.
12. Для даного двовимірного масиву вкажіть індекси тих елементів, сума яких дорівнює заданому числу (якщо такі є). Якщо таких елементів немає, вивести про це повідомлення. Використовуйте підпрограми для вирішення кожного завдання.
13. Дан двовимірний масив. Знайдіть суму елементів стовпця і рядка масиву, на перетині яких знаходиться нульовий елемент. Використовуйте підпрограми для вирішення кожного завдання.
14. Скласти програму, що записує всі додатні елементи двовимірного масиву А в одновимірний масив В, а від'ємні - в одновимірний масив С. Вивести отримані масиви на екран. Використовуйте підпрограми для вирішення кожного завдання.
15. Дан двовимірний масив. Сформувати одновимірний масив шляхом ділення додатних елементів заданої таблиці на число К. Вивести отриманий масив на екран. Використовуйте підпрограми для вирішення кожного завдання.
16. Обчисліть суму елементів, що знаходяться на перетині поточного рядка і двох діагоналей двовимірного квадратного масиву, і запишіть їх у одновимірний масив. Знайдіть найбільший з цих елементів. (Елементами і-го рядка, що лежать на діагоналях, є a[і,j] і a[і,n-j+1]). Використовуйте підпрограми для вирішення кожного завдання.
17. Дан двовимірний масив. Заповнити одновимірний масив сумами елементів рядків, вивести отриману інформацію на екран і номери рядків, в яких сума найменша. Використовуйте підпрограми для вирішення кожного завдання.
18. Дан двовимірний масив. Заповнити одновимірний масив найменшими значеннями елементів рядків, вивести отриману інформацію на екран і номери рядків, в яких значення найменші. Використовуйте підпрограми для вирішення кожного завдання.
19. Дан двовимірний масив. Знайти найбільший і найменший елементи масиву і, чергуючи, заповнити ними одновимірний масив заданої розмірності. Використовуйте підпрограми для вирішення кожного завдання.
20. Дан двовимірний квадратний масив. У кожному рядку двовимірного масиву найбільший елемент і елемент головної діагоналі поміняти місцями, а їх середнє арифметичне занести в одновимірний масив. Вивести на екран отриманий масив і середнє арифметичне його елементів. Використовуйте підпрограми для вирішення кожного завдання.
21. Дан двовимірний квадратний масив. У кожному рядку двовимірного масиву найбільший елемент помістити на місце першого елемента масиву, а найменший елементи - на місце останнього. Створити одновимірний масив, елементи якого є сумою цих елементів. Вивести на екран отриманий масив і суму його елементів.
22. Визначити мінімальний елемент двовимірного масиву. Надрукувати номер рядка, що містить максимальну кількість мінімальних елементів, якщо такі є. Використовуйте підпрограми для вирішення кожного завдання.
23. У двовимірному масиві Х всі числа різні. У кожному рядку вибирається мінімальний елемент, потім серед цих чисел вибирається максимальне. Надрукувати номер рядка масиву Х, в якій розташоване вибране число.
24. Дан двовимірний масив. Знайти найбільше із значень елементів першого і останнього рядка. Використовуйте підпрограми для вирішення кожного завдання.
25. Дан двовимірний масив. Знайдіть суму найбільших значень елементів його рядків. Використовуйте підпрограми для вирішення кожного завдання.
26. У двовимірному масиві поміняйте місцями перший рядок, і рядок у якому знаходиться перший нульовий елемент.
27. У двовимірному масиві переставте рядки наступним чином: перший з останнім, другу з передостаннім і так далі. Якщо рядків непарне число, то середнійзалишається незмінним.
28. Дан двовимірний масив А. Розставити його стовпці в такому порядку:
а) останній, передостанній, ..., другий, перший;
б) перший, останній, другий, передостанній, третій, ...
29. Дан двовимірний масив. Починаючи з першого рядка, зрушити всі рядки на два вниз, а останні перенесіть на місце перших двох рядків.
30. Дан двовимірний масив дійсних чисел розмірністю [1 .. N, 1 .. N]. Провести сортування стовпців за зменьшенням елементів останнього рядка. Обчислити суму елементів розташованих на діагоналях отриманої матриці. Сортування провести методом прямого вибору. Вивести на екран початковий і отриманий масиви у вигляді матриці.
31. Дан двовимірний масив дійсних чисел розмірністю [1 .. N, 1 .. N]. Провести сортування стовпців за зростанням елементів першого рядка. Обчислити середнє арифметичне елементів розташованих по периметру отриманої матриці. Сортування провести методом прямого вибору. Вивести на екран початковий і отриманий масиви у вигляді матриці.
32. Дан двовимірний масив, що містить 4 рядки та 5 стовпців. Елементами масиву є цілі числа. Упорядкувати масив за зростанням елементів 3-го стовпця.
7. Символи
У більшості застосувань комп'ютера алфавітно-цифрова інформація використовується поряд з числовою інформацією. Для їх подання в мові програмування Паскаль передбачено тип даних char.
Так як char - порядковий тип, то до його значенням застосовні наступні функції:
Succ - повертає наступний символ літерної множини;
Pred - повертає попередній символ літерної множини;
Ord - повертає значення коду літери;
Chr - повертає значення літери, є зворотною по відношенню до функції Ord.
Наприклад,
Succ (0 ") = '1 '- символ, наступний за символом 0, дорівнює символу 1.
Pred ('3 ') = '2' - символ, що передує символу 3, дорівнює 2;
Chr (65) = 'A' - символ, що відповідає коду 65, дорівнює А;
Ord ('A') = 65 - код символу А дорівнює 65
Задача 1
Необхідно розробити функції, що будуть визначати, чиє введений користувачем символ:
1. Десятковою цифрою;
2. Малою літерою латиниці;
3. Малою літерою кирилиці;
4. Малою літерою латиниці чи кирилиці;
5. Великою літерою латиниці чи кирилиці;
6. Літерою латиниці чи кирилиці.
Якщо символ задовольняє наведену умову, функція повертає значення 1, у противному разі її значення длрівнює 0. Необхідно розробити зручний інтерфейс користувача програми.
Програма для визначення ASCII-кодів будь-яких символів:
Program ASCII;
Var
і:byte;
A:array[0..255] of char;
begin
for і:=0 to 255 do
begin
A[і]:=chr(і);
write(' ',і,'=',A[і]);
if і mod 10=0 then writeln;
end;
End.
Program Kor_Func;
Uses Crt;
Var
c:char;
Kod:byte;
n:integer;
Function Cifra (c:char):byte;
Var
x:byte;
begin
Kod:=ord(c);
If (kod>=48)and(kod<=57) then X:=1
Else X:=0;
Cifra:=x;
end;
Function Mala_Lat (c:char):byte;
Var
x:byte;
begin
Kod:=ord(c);
If (kod>=97)and(kod<=122) then X:=1
Else X:=0;
Mala_Lat:=x;
end;
Function Mala_Kur (c:char):byte;
Var
x:byte;
begin
Kod:=ord(c);
If ((kod>=160)and(kod<=175))or
((kod>=224)and(kod<=239))or
((kod>=241)and(kod<=245)) then
X:=1
Else X:=0;
Mala_Kur:=x;
end;
Function Mal_Lat_Kur (c:char):byte;
Var
x:byte;
begin
Kod:=ord(c);
If ((kod>=97)and(kod<=122))or
((kod>=160)and(kod<=175))or
((kod>=224)and(kod<=239))or
(kod>=241)or(kod=243)or(kod<=245) then
X:=1
Else X:=0;
Mal_Lat_Kur:=x;
end;
Function Vel_Lat_Kur (c:char):byte;
Var
x:byte;
begin
Kod:=ord(c);
If ((kod>=65)and(kod<=90))or
((kod>=128)and(kod<=159))or
(kod=240)or(kod=244) then
X:=1
Else X:=0;
Vel_Lat_Kur:=x;
end;
Function Lat_Kur (c:char):byte;
Var
x:byte;
begin
Kod:=ord(c);
If ((kod>=65)and(kod<=90))or
((kod>=97)and(kod<=122))or
((kod>=128)and(kod<=159))or
(kod=240)or(kod=244)or
((kod>=160)and(kod<=175))or
((kod>=224)and(kod<=239))or
(kod=241)or(kod=243)or(kod=245) then
X:=1
else X:=0;
Lat_Kur:=x;
end;
Begin
Clrscr;
Window(1,1,80,25);
Textbackground(0);
Clrscr;
Window(2,2,78,16);
Textbackground(blue);
Clrscr;
GoToXY(28,2);
TextColor(14);
Write(#201);
Write(#205,#205,#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205);
Write(#205,#205,#205,#205,#205,#205,#205,#205,#205);
Write(#187);
GoToXY(30,3);
TextColor(14);
Write('Oberit nomer zavdannya:');
GoToXY(28,3);
TextColor(14);
write(#186);
GoToXY(53,3);
TextColor(14);
write(#186);
GoToXY(28,4);
TextColor(14);
write(#200);
Write(#205,#205,#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205);
Write(#205,#205,#205,#205,#205,#205,#205,#205,#205);
GoToXY(53,4);
TextColor(14);
write(#188);
GoToXY(25,6);
TextColor(15);
write('1 - desyatkova cifra');
GoToXY(25,7);
write('2 - mala litera latunuzi');
GoToXY(25,8);
write('3 - mala litera kuruluzi');
GoToXY(25,9);
write('4 - mala litera latunuzi chu kuruluzi');
GoToXY(25,10);
write('5 - veluka litera latunuzi chu kuruluzi');
GoToXY(25,11);
write('6 - litera latunuzi chu kuruluzi');
GoToXY(20,14);
write('Vash vubir:',n);
readln(n);
Window(1,18,80,25);
Textbackground(7);
Clrscr;
Window(3,20,20,22);
Textbackground(2);
Clrscr;
GoToXY(4,21);
TextColor(14);
Write(#201,#205,#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205);
write(#187);
write(' ');
TextColor(14);
Write(#186,' Sumvol: ',#186,' ');
readln(c);
write(#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#188);
Window(60,20,77,22);
Textbackground(4);
clrscr;
write(#201,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#187);
write(' ');
TextColor(14);
Write(#186,' Rezyltat: ',#186,' ');
Case n of
1:writeln(Cifra(c));
2:writeln(Mala_Lat(c));
3:writeln(Mala_Kur(c));
4:writeln(Mal_Lat_Kur(c));
5:writeln(Vel_Lat_Kur(c));
6:writeln(Lat_Kur(c));
end;
write(#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#188);
Window(1,26,80,50);
Textbackground(0);
Clrscr;
Readln;
End.
Задача 2
Необхідно розробити функції, до функції UpCase. Функція повинна заміняти велику латинську літеру, що буде її аргументом на малу. Якщо символ не є великою літерою латиниці, функція її не замінює.
Program Obern_UpCase;
Uses Crt;
Var
c,c1:char;
Function Vel_Lat_Mal (c:char):char;
Var
x,x1:byte;
begin
x:=ord(c);
If ((x>=65)and(x<=90)) then
begin
x1:=x+32;
C1:=chr(x1);
end
Else writeln(`Sumvol ne veluka litera latunuzi');
Vel_Lat_Mal:=C1;
end;
Begin
Clrscr;
Write(`yvedit sumvol=>');
Readln( c) ;
Vel_Lat_Mal(c);
Writeln( c1);
Readln;
End.
Задача 3
Необхідно вивести на екран наступні послідовності символів;
1. ABBCCCDDDD…ZZZZ…ZZ;
2. ABC…ZBBCC…ZZCCCDDD…ZZZ…
3. AZBYCXDW…
Program vuvod_Simv_1;
Uses Crt;
Var
і,n:byte;
Begin
Clrscr;
for і:=65 to 90 do
begin
n:=і-64;
while n>0 do
begin
write(chr(і));
n:=n-1;
end;
end;
Readln;
End.
Program vuvod_Simv_2;
Uses CRT;
Var
і,t,n,m,k:integer;
Begin
clrscr;
n:=1;
while n<=26 do
begin
for і:=64+n to 90 do
begin
k:=1;
m:=n;
while m>0 do
begin
Write( chr(і) );
m:=m-1;
end;
end;
n:=n+1;
end;
Readln;
End.
Program vuvod_Simv_3;
Uses CRT;
Var
і,t:integer;
Begin
Clrscr;
і:=65;
t:=90;
While (і<=77)and(t>=78) do
begin
Write(chr(і));
Write(chr(t));
і:=і+1;
T:=t-1;
end;
readln;
End.
Задача 4
Необхідно визначити кількість цифр в довільній послідовності символів уведених користувачем.
Program Kil_Cifr;
Uses CRT;
Const n=10;
Var
і,k,m : integer;
C:array[1..n] of char;
Begin
Clrscr;
for і:=1 to n do
Read(C[і]);
k:=0;
і:=1;
for і:=1 to n do
begin
m:=ord(C[і]);
If (m>=48)and(m<=57)and(m<>0) then k:=k+1;
end;
WriteLn( k );
readln;
End.
Завдання для самостійної роботи
1. Вивести в один рядок АаБбВвГг.
2. Запитайте у користувача символ і виведіть на екран 5 символів, наступних за ним в таблиці американських стандартних кодів обміну інформацією. Перевірте, чи є серед них розділові знаки.
3. Запитайте у користувача символ і виведіть на екран 5 символів, що передують даному в таблиці американських стандартних кодів обміну інформацією. Перевірте, чи є серед них знаки найпростіших математичних дій.
4. Вивести в один рядок ZYY ... AA ... A.
5. Складіть програму, яка перевіряє, чи є введений символ буквою латинського алфавіту або дужкою (врахувати круглі, фігурні та квадратні дужки).
6. Запитайте у користувача декілька символів і виведіть на екран їх коди. Перевірте, чи є вони літерами.
7. Вивести трикутник:
Аяяяяяяяя ... я
Бюююю ... ю
Вееееее ... е. . .
Еввв
Юбб
Яа.
8. Вивести трикутник:
A B C ... Y Z
B C ... Y Z
C ... Y Z
8. Рядки
Рядок (string) - це послідовність літер.
Тип даних (string) визначає рядки з максимальною довжиною 255 символів. Змінна цього типу може приймати значення змінної довжини.
Рядкова змінна може мати атрибут довжини, що визначає її максимальну довжину.
Поточна довжина строкової змінної може бути визначена за допомогою вбудованої функції Length, для заданого значення типу string ця функція повертає ціле значення, що показує кількість літер у рядку.
Вирази, в яких операндами служать рядки, називаються рядковими виразами.
Над рядками визначені дві операції:
1. Операція об'єднання (+) застосовується для зчеплення декількох рядків в один.
Наприклад,
SumStr: = 'Турбо' + 'Паскаль' + '7 .0 '
2. Операції відносини (=, <>,>, <,> =, <=) проводять порівняння двох рядків зліва направо до першого неспівпадаючого символу, і той рядок вважається більше, в якому перший неспівпадаючий символ має більший номер в стандартній таблиці обміну інформацією. Результат виконання операцій відношення над рядками завжди має булевой тип.
Наприклад,
вираз «MS-DOS '<' MS-Dos 'має значення True
Якщо рядки мають різну довжину, але в загальній частині символи збігаються, вважається, що більш короткий рядок менший, ніж довший.
Рядки вважаються рівними, якщо вони збігаються по довжині і містять одні й ті ж символи на відповідних місцях в рядку.
Для присвоювання рядковій змінні результату рядкового виразу використовується оператор присвоювання. Якщо значення змінної після виконання оператора присвоювання перевищує по довжині максимально допустиму при описі величину, то всі зайві символи справа відкидаються.
Допускається змішування в одному виразі операндів рядкового і символьного типу.
До окремих символів рядка можна звернутися за номером (індексом) даного символу в рядку.
Для обробки рядових даних можна використовувати вбудовані процедури і функції:
1. Delete (Str, Poz, N) - видалення N символів рядка Str, починаючи з позиції Poz.
2. Insert (What, Where, Poz) - вставка рядка What в рядок Where, починаючи з позиції Poz.
3. Copy (Str, Poz, Nstr) - виділяє рядок довжиною Nstr, починаючи з позиції Poz, з рядка Str.
4. Concat (Str1, Str2,..., StrN) - виконує зчеплення рядків у тому порядку, в якому вказані в списку параметрів.
5. Poz (What, Where) - виявляє перша поява підрядка What в рядку Where.
6. UpCase (Ch) - перетворює малу літеру в прописну.
7. Str (Number, Stroka) - перетворює число в рядок.
8. Val (Stroka, Number, Code) - перетворює рядок у число і видає код правильності перетворення.
Задача 1
Дано довільний текстовий фрагмент, довжина якого не перевищує 255 символів. Необхідно визначити та вивести на екран:
1. Окремі слова, з яких складається текстовий фрагмент;
2. Кількість слів у тексті;
3. Найдовше слово в тексті та його довжину;
4. Кількість літер а, шо містить найдовше слово;
5. Кількість слів, у яких перший символ збігається з останнім;
6. Будь-яке слово, що починається з літери, яку вводить користувач.
Program slovo_1;
Uses CRT;
Const n=126;
Var
S:string;
M_sl:array[1..n] of string;
R,dov,І,j:integer;
Begin
Clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
j:=1;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r<>0 then
begin
M_sl[j]:=copy(S,1,r-1);
Delete(S,1,r);
Dov:=length(S);
j:=j+1;
end
Else
begin
M_sl[j]:=S;
Dov:=0;
end;
end;
For j:=1 to j do
If M_sl[j]<>' ' then
Writeln (M_sl[j]);
Readln;
End.
Program slovo_2;
Uses CRT;
Const n=126;
Var
S:string;
M_sl:array[1..n] of string;
R,dov,І,j:integer;
Begin
Clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
j:=1;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r<>0 then
begin
M_sl[j]:=copy(S,1,r-1);
Delete(S,1,r);
Dov:=length(S);
j:=j+1;
end
Else
begin
M_sl[j]:=S;
Dov:=0;
end;
end;
For j:=1 to j do
If M_sl[j]<>' ' then
Writeln (M_sl[j]);
writeln ('Kilkist sliv y teksti: ',j);
Readln;
End.
Program slovo_3;
Uses CRT;
Const n=126;
Var
S:string;
M_sl:array[1..n] of string;
R,dov,І,j:integer;
Begin
Clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
j:=1;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r<>0 then
begin
M_sl[j]:=copy(S,1,r-1);
Delete(S,1,r);
Dov:=length(S);
j:=j+1;
End
Else
begin
M_sl[j]:=S;
Dov:=0;
end;
end;
For j:=1 to j do
If M_sl[j]<>' ' then
Writeln (M_sl[j]);
writeln ('Kilkist sliv y teksti: ',j);
if M_sl[j]<>' ' then
begin
max:=length(M_sl[1]);
N_max:=1;
for j:=2 to j do
if length(M_sl[j])> max then
begin
max:=length(M_sl[j]);
n_max:=j;
end;
end;
writeln ('Maksumalna dovghuna slova: ',max);
writeln ('Nomer slova maksumalnoj dovghunu: ',n_max);
Readln;
End.
Program slovo_4;
Uses CRT;
Const n=126;
Var
S:string;
M_sl:array[1..n] of string;
R,dov,І,j,max,n_max,k,m:integer;
Begin
Clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
j:=1;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r<>0 then
begin
M_sl[j]:=copy(S,1,r-1);
Delete(S,1,r);
Dov:=length(S);
j:=j+1;
end
Else
begin
M_sl[j]:=S;
Dov:=0;
end;
end;
for j:=1 to j do
If M_sl[j]<>' ' then
Writeln (M_sl[j]);
writeln ('Kilkist sliv y teksti: ',j);
if M_sl[j]<>' ' then
begin
max:=length(M_sl[1]);
N_max:=1;
for j:=2 to j do
if length(M_sl[j])> max then
begin
max:=length(M_sl[j]);
n_max:=j;
end;
end;
m:=0;
for k:=1 to max do
begin
if M_sl[n_max][k]='a' then m:=m+1;
end;
writeln ('Maksumalna dovghuna slova: ',max);
writeln ('Nomer slova maksumalnoj dovghunu: ',n_max);
writeln ('V najdovshe slovo litera a vxodut: ',m,' raz');
Readln;
End.
Program slovo_5;
Uses crt;
Const n=126;
Var
S:string;
M_sl:array[1..n] of string;
R,dov,І,j,m:integer;
Begin
clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
j:=1;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r<>0 then
begin
M_sl[j]:=copy(S,1,r-1);
Delete(S,1,r);
Dov:=length(S);
j:=j+1;
end
Else
begin
M_sl[j]:=S;
Dov:=0;
end;
end;
for j:=1 to j do
If M_sl[j]<>' ' then
Writeln (M_sl[j]);
writeln ('Kilkist sliv y teksti: ',j);
if M_sl[j]<>' ' then
begin
m:=0;
for j:=1 to j do
if M_sl[1] =M_sl[j] then
begin
m:=m+1;
end;
end;
writeln ('Sliv, y yakuch persha litera zbigajtsya z ostannjoj: ',m,' raz');
Readln;
End.
Program slovo_6;
Uses crt;
Const n=126;
Var
S,s1:string;
M_sl:array[1..n] of string;
R,dov,І,j,max,n_max,k,m:integer;
Begin
clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Write('Yvedit sumvol =>');
Readln(s1);
Dov:=length(S);
j:=1;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r<>0 then
begin
M_sl[j]:=copy(S,1,r-1);
Delete(S,1,r);
Dov:=length(S);
j:=j+1;
end
Else
begin
M_sl[j]:=S;
Dov:=0;
end;
end;
for j:=1 to j do
If M_sl[j]<>' ' then
Writeln (M_sl[j]);
writeln ('Kilkist sliv y teksti: ',j);
if M_sl[j]<>' ' then
begin
m:=0;
for j:=1 to j do
begin
for і:=1 to 1 do
begin
if M_sl[j][1] = s1 then
begin
m:=m+1;
writeln('Znajdene slovo: ',M_sl[j]) ;
end;
end;
if m=0 then writeln('Take slovo v teksti vidsytnj');
end;
end;
Readln;
End.
Задача 2
Дано довільний текстовий рядок, визначити чи є рядок симетричним, а може він і паліндромом.
Program palidrom;
Uses crt;
Const n=126;
Var
S:string;
r,dov,І,k,l,m,p:integer;
Begin
clrscr;
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
r:=0;
for і:=1 to dov do
begin
if s[і] =' ' then
r:=r+1;
end;
l:=r;
і:=1;
while (l<>0)and(dov<>0) do
begin
p:=pos(' ',s);
delete(s,p,1);
l:=l-1;
і:=і+1;
end;
dov:=length(s);
k:=dov div 2;
m:=0;
for і:=1 to k do
begin
if S[І]=S[dov-і+1] then
m:=m+1;
end;
if m=k then
begin
writeln('Ryadok - cumetruchnuj');
if (r mod 2)=0 then
writeln('Ryadok - palidrom')
else writeln('Ryadok - ne palidrom');
end
else writeln('Ryadok - ne cumetruchnuj');
Readln;
End.
Задача 3
Кожна літера тексту замінюється на літеру, яка знаходиться від початкової в абетці на відстані числа шифру. Зашифрувати введений рядок тексту.
Program shufr;
Const n=126;
Var
S:string;
dov,І,k,l,m:integer;
s1:array[1..n] of char;
Begin
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Write('Yvedit chuclo shufry =>');
Readln(m);
Dov:=length(S);
for і:=1 to dov do
begin
s1[і]:=s[і];
l:=ord(s1[і]);
if l<>32 then
begin
k:=l+m;
s1[і]:=chr(k);
s[і]:=s1[і];
end;
end;
writeln(s);
Readln;
End.
Задача 4
Кожна літера тексту замінюється на літеру, яка знаходиться від початкової в абетці на відстані числа шифру. Розшифруйте введений рядок тексту.
Program rozshufr;
Const n=126;
Var
S:string;
dov,І,k,l,m:integer;
s1:array[1..n] of char;
Begin
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Write('Yvedit chuclo shufry =>');
Readln(m);
Dov:=length(S);
for і:=1 to dov do
begin
s1[і]:=s[і];
l:=ord(s1[і]);
if l<>32 then
begin
k:=l-m;
s1[і]:=chr(k);
s[і]:=s1[і];
end;
end;
writeln(s);
Readln;
End.
Задача 5
Необхідно розробити програму, яка отримавши рядок, що містить шлях до файлу, записаний за стандартами ОС Windows, перетворює цей шлях відповідно до стандарту ОС Unix, тобто замінює в рядку всі символи `/' на символи `\'.
Program zam_W_U;
Const
n=126;
s1='\';
Var
S:string;
dov,І:integer;
Begin
Write('Yvedit shlyach do faily v Windows=>');
Readln(S);
Dov:=length(S);
for і:=1 to dov do
begin
if s[і]='/' then
begin
Delete(s,і,1);
Insert(s1,s,і);
end
end;
writeln(s);
Readln;
End.
Задача 6
Необхідно розробити програму, яка отримавши рядок, що містить шлях до файлу, записаний за стандартами ОС Windows, перетворює цей шлях відповідно до стандарту, що використовує фірма Borland, тобто замінює в рядку всі символи `/' на символи `\\'.
Program zam_W_B;
Const
n=126;
s1='\\';
Var
S:string;
dov,І:integer;
Begin
Write('Yvedit shlyach do faily v Windows=>');
Readln(S);
Dov:=length(S);
for і:=1 to dov+1 do
begin
if s[і]='/' then
begin
Delete(s,і,1);
Insert(s1,s,і);
end
end;
writeln(s);
Readln;
End.
Задача 7
Необхідно вивести на екран слово, уведене користувачем (складається з літер української абетки), замінюючи в ньому кожну літеру її номером в українській абетці та відділяючи ці номери символом пропуску.
Program zam_l_z;
Const
n=126;
s1=' ';
Var
S,s2:string;
dov,dov1,І,l,m:integer;
Begin
Write('Yvedit slovo=>');
Readln(S);
Dov:=length(S);
і:=1;
while dov<>0 do
begin
l:=ord(s[і]);
m:=l-223;
str(m,s2);
dov1:=length(s2);
delete(s,і,1);
insert(s2,s,і);
insert(s1,s,і+dov1);
і:=і+dov1+1;
WriteLn( і );
dov:=dov-1;
end;
write(s);
Readln;
End.
Задача 8
В текстовому фрагменті є одна дужка (, що відкривається, та одна дужка ), що закривається. Виведіть на екран символи, розміщені в дужках.
Program vstav_v_dyghku;
Const n=126;
Var
S,s1:string;
dov,dov1,І,k,l,m:integer;
Begin
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Write('Yvedit fragment v dyghkax =>');
Readln(s1);
Dov:=length(S);
dov1:=length(s1);
for і:=1 to dov do
begin
if s[і]='(' then
insert(s1,s,і+1);
end;
writeln(s);
Readln;
End.
Задача 9
В текстовому повідомленні є помилки. Якщо виявлена помилка, то в тексті розміщується символ #, який вказує що попередню до нього літеру потрібно видалити. Якщо в тексті трапляється декілька символів #, їх число визначає, скільки символів до цього треба видалити. Необхідно вивести на екран повідомлення без помилок.
Program pomulku_text;
Const n=126;
Var
S,s1:string;
dov,dov1,І,k,l,m:integer;
Begin
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
і:=1;
while і<=dov do
begin
if s[і]='#' then
begin
delete(s,і-1,2);
dov:=dov-2;
і:=і-1;
if s[1 ]='#' then
begin
delete(s,1,1);
dov:=dov-1;
end;
end
else і:=і+1;
end;
writeln(s);
Readln;
End.
Задача 10
Дано рядок, що містить довільний текст, який закінчується крапкою. Виведіть на екран слова цього тексту, що складаються з чотирьох символів.
Program slovo_4sumv;
Const n=126;
Var
S,s1:string;
M_sl:array[1..n] of string;
R,dov,І,j:integer;
Begin
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
j:=1;
і:=0;
While dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
R:=Pos(' ',S);
If r=5 then
begin
M_sl[j]:=copy(S,1,r-1);
writeln(M_sl[j]);
Delete(S,1,r);
Dov:=length(S);
end
Else
begin
if r<>0 then
begin
delete(s,1,r);
Dov:=length(s);
end
else dov:=0;
end;
end;
Readln;
End.
Задача 10
Пропуск вважається зайвим, якщо він розміщується на початку рядка, у кінці рядка, за іншим пропуском. Необхідно з рядка видалити лишні пропуски.
Program del_propysk;
Const n=126;
Var
S,s1,s2:string;
R,dov:integer;
Begin
Write('Yvedit tekctovuj fragment =>');
Readln(S);
Dov:=length(S);
while dov<>0 do
begin
While (S[1]=' ')and(dov<>0) do
begin
Delete(S,1,1);
Dov:=length(S);
end;
Подобные документы
Алгоритми розв’язання задач у вигляді блок–схем. Використання мови програмування 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