Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bakit-pasсал-лек.doc
Скачиваний:
44
Добавлен:
01.05.2015
Размер:
665.6 Кб
Скачать

2. Көп (екі) өлшемді массивтер

Екі өлшемді массивтер кестелік мәліметтермен жұмыс істеуге арналған. Екі өлшемді массивтерде жол мен бағанның қиылысуында орналасқан әрбір элементтің орны сол жол және баған номерімен анықталады. Сондықтан екі өлшемді массивті сипаттау үшін екі индекс қолданылады. Массивтің элементін жазу кезінде индекстер массивтің атынан соң тік жақша ішінде жазылады және олардың арасына үтір қойылады.

Мысалы, натурал сандардан тұратын өлшемі n x m болатын екі өлшемді массивті сипаттау былай орындалады:

var mas : arraay[1…n, 1…m] of integer;

1- есеп. Екі санның көбейтіндісінің кестесін құрып, оны екі өлшемді С массивіне жазатын бағдарлама құрыңдар. Массивті компьютер экранына кесте түрінде шығарыңдар.

program prog_1;

uses crt;

const n=9;

var c : array[1..n, 1..n] of integer;

i,j : integer;

begin

clrscr;

for i := 1 to n do

begin

for i := 1 to n do

begin

c[i,j] := i*j;

write(c[i,j] : 6)

end;

writeln

end;

readln

end.

2- есеп. Латын әріптерінен тұратын n x m өлшемді матрица берілген. Осы массивтегі әрбір жолды алфавиттік рет бойынша сұрыптаңдар.

program prog_3;

const t = 100: s = 100;

var a : array[1..t, 1..s] of char;

n, m, i, j, k : integer; temp : char;

begin

write(' Жолдардың санын енгізіңдер n= ');

readln(n);

write(' Бағандардың санын енгізіңдер m= ');

readln(m);

writeln(m*n, 'әріп енгізіңдер');

for i:= 1 to n do

for j := 1 to m do

read(a[i, j]);

for i := 1 to n do

begin

for k := i to m-1 do

for j := k to m do

if a[i, k]>a[i, j] then begin

temp := a[i, k];

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

a[i, j] := temp;

end;

end;

for i := 1 to n do begin

for j := 1 to m do

write(a[i, j]);

writeln

end;

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. a массивінің өлшемін және оның элементтерінің мәндерін енгіземіз.

3. Массивтің жолдарын көреміз және реттейміз.

4. Массивті экранға шығарамыз.

Айнымалылар:

a- екі өлшемді массив;

n, m – массивтің жолдары мен бағандарының саны;

i, j, k – цикл айнымалылары;

temp – ағымдағы кіші элемент (әріп).

3-есеп. Нақты сандардан тұратын, өлшемдері 2х3, 3х3 екі а және b матрицаның көбейтіндісін табыңдар.

С матрицаның элементтері (өлшемі 2х3) мына формуламен анықталады:

Сi, j = , i = 1, 2…, n ;j = 1, 2, …, p.

Мұндағы, n- а-ның жолдарының саны,

m- а-ның бағандарының және в-ның жолдарының саны,

p- b-ның бағандарының саны,

С матрицасы n жолдан, p бағаннан тұрады.

С-ның элементтерін есептеу үшін қосындыны жинайтын ішкі цикл құрылады, ол циклдің параметрін к деп белгілейік.

program prog_5;

var a, c : array[1..2, 1..3] of real;

b : array[1..3, 1..3] of real;

i, j, k : integer;

begin

writeln('а массивін енгізіңдер');

for i:=1 to 2 do

for j:=1 to 3 do

read(a[i, j]);

writeln('в массивін енгізіңдер');

for i:= 1 to 3 do

for j:= 1 to 3 do

read(b[i, j]);

{матрицаны көбейту}

for i:= 1 to 2 do

for j:=1 to 3 do begin

c[i, j]:=0

for k:= 1 to 3 do

c[i, j];=c[i, j]+a[i, k]*b[k, j]

end;

(С массивін экранға шығару)

writeln ('c массиві’);

for i:= 1 to 2 do begin

writeln;

for j:= 1 to 3 do

write(c[i, j] :12:5) end;

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. a - массивінің элементтерін енгіземіз.

3. b - массивінің элементтерін енгіземіз.

4. Матрицаны көбейтуді жүзеге асырамыз.

5. c - массивін экранға шығарамыз.

Айнымалылар:

a – екі өлшемді массив;

b –екі өлшемді массив;

c – екі өлшемді массив;

i, j, k - цикл айнымалылары.

7-лекция. Жиындар

Қандай да бір элементтер тобын жиын деп түсінетінбіз. Мысалы, жазықтықтағы фигуралар (төртбұрыш, шеңбер, ромб, квадрат) жиыны. Жиындарға келесі амалдар қолданатындығы бізге белгілі:

  • жиындарды біріктіру (c=ab). C жиынының әрбір элементі не a жиынының элементі, не b жиынының элементі болады;

  • жиындардың қиылысуы (c=ab). C жиынының әрбір элементі бірмезгілде a мен b жиынының элементі болады;

  • екі жиынның айырмасы (c=a\b) с жиынының әрбір элементі a жиынының элементі болады, b жиынының элементі болмайды;

  1. {шеңбер, ромб}{ шеңбер, квадрат}={шеңбер, ромб, квадрат};

  2. {шеңбер}{ шеңбер, ромб, квадрат}={шеңбер};

3) {шеңбер, ромб, квадрат}\{шеңбер, квадрат}={ромб}

Ескерту. Жиынның элементтері ретсіз орналаса береді, сондықтан, мысалы {2, 10, 9},{9, 10, 2},{2, 9, 10} т.с.с. жиындар бірдей болып есептелінеді.

Паскаль тіліндегі жиын – бұл бір типтегі ретсіз орналасқан әртүрлі элементтердің шектелген тобы. Жиынға енетін элементтердің типі ретінде стандартты (нақты типтен басқа), саналатын және шектелген типтерді пайдалануға болады. Жиындарды сипаттау былай жүзеге асырылады:

1) var <жиын аты>:set of <негізгі тип>;

Мысалы,

var жыл : set of 1880…2000;

c : set of char;

2) type <тип аты>=set of <негізгі тип>;

var <жиын аты>:<тип аты>;

Мысалы, Элементтері КОМПЛЕКТ типіндегі мәліметтер болып табылатын КОМПЬЮТЕР жиынын сипаттайық:

Type КОМПЛЕКТ (ДИСК, КЛАВИАТУРА, МОНИТОР, МЫШЬ, КОЛОНКА, ПРОЦЕССОР, ВЕНЕЛЯТОР);

КОМПЬЮТЕР=SET OF КОМПЛЕКТ;

Енді осы типтегі айнымалыларды былай сипаттауға болады:

VAR ПРИНТЕР, СКАНЕР, МОДЕМ:КОМПЬЮТЕР;

Жиын тұрақтылары мен айнымалыларының мәндері операторлар бөлімінде конструктор көмегімен беріледі. Конструктор – квадрат жақша ішіне орналасқан негізгі типтің элементтері тізімінен тұрады. Мысалы,

ФИГУРА:=[РОМБ];

Немесе

ФИГУРА:=[ШЕҢБЕР, РОМБ, КВАДРАТ];

M1:=['a', 'b', 'c'];

M2:=[1, 3, 2, 5];

M1:=[]; {Бос жиын}

Паскаль тілінде жиындарға мынадай амалдар қолданылады:

+жиындарды біріктіру;

*жиындардың қиылысуы;

- жиындардың айырмасы;

=, <> жиындардың теңдігін, тең еместігін тексеру.

Егер а жиынының әрбір элементі b жиынының элементі болса және керісінше b–ның әрбір элементі а жиынының элементі болса, онда а жиыны b жиынымен тең болады. Басқа жағдайда а және b жиындары тең болмайды.

<=, >= жиындардың ішкі жиынға енуін тексеру.

Егер а жиынының барлық элементтері бір мезгілде b жиынының элементтері болып табылса, онда а жиыны b жиынына ішкі жиын болады, яғни b жиынына енеді дейміз. Бұны былай сипаттаймыз:

a <= b (немесе b>=a)

in - элементтің жиынға жататындығын тексеру.

Бұл амал (c in a) с негізгі типтің элементін а жиынына жататындығын тексереді.

1-есеп. Символдық типтегі үш жиын өз конструкторларымен берілген:

y1=['a', 'b', 'd', 'r', m'];

y2=['r', 'a', 'h', 'd'];

y3=['a', 'r'].

Мына формуламен анықталатын жаңа жиын құрыңдар:

x=(y1y2) (y1\y2)

Алынған жиынды жауапқа шығарыңдар және у3 жиыны х жиынының ішкі жиыны болатындығын анықтаңдар.

program prog_1;

var y1, y2, y3, x : set of char;

c : char;

begin

y1:=['a', 'b', 'd', 'r', m'];

y2:=['r', 'a', 'h', 'd'];

y3:=['a', 'r'];

{Формула бойынша жиын құру және жауапқа шығару}

x=(y1*y2)+(y1-y2);

write('x жиыны =');

for c:='a' to 'r' do

if c in x then write(c);

writeln;

{у3 жиыны х жиынының ішкі жиыны екендігін тексеру}

if y3<=x then write('у3 жиыны х жиынының ішкі жиыны')

else write('у3 жиыны х жиынының ішкі жиыны емес')

end.

Жауабы:

х жиыны = abdmr

у3 жиыны х жиынының ішкі жиыны

2-есеп. 1…20 бүтін сандар жиынынан: 6-ға қалдықсыз бөлінетін сандар жиынын; 2-ге немесе 3-ке қалдықсыз бөлінетін сандар жиынын ажыратып алыңдар.

program prog_2;

const n=20; var n2, n3, n6, n23 : set of char;

k : integer;

begin

n2:=[]; n3:=[];

for k:=1 to n do

begin

if k mod 2 = 0 then n2:=n2+[k];

if k mod 3 = 0 then n3:=n3+[k];

end.

n6:=n2*n3;

n23:=n2+n3;

writeln('6-ға бөлінетін сандар: ');

for k:=1 to n do

if k in n6 then write(k);

writeln;

writeln('2-ге немесе 3-ке бөлінетін сандар: ');

for k:=1 to n do

if k in n23 then write(k);

end.

Жауабы:

6-ға бөлінетін сандар:

  1. 12 18

2-ге немесе 3-ке бөлінетін сандар:

2 3 4 6 8 9 10 12 14 15 16 18 20

8-лекция. Текстік ақпараттарды өңдеу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]