“Ипподром” ойынын программалау



Кiрiспе
1. Есеп қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
2. Қолданылған әдiстер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
3. Есеп алгоритмi. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
4. Бадағрламаның баяндалуы. ... ... ... ... ... ... ... ... ... ... ... ... ..
4.1Жалпы мағлұмат. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
4.2Функциялардың тағайындалуы. ... ... ... ... ... ... ... ... ...
4.3Логикалық құрылымның баяндалуы. ... ... ... ... ... ... ...
4.4Шақыру және жүктеу. ... ... ... ... ... ... ... ... ... ... ... ... ...
4.5Қажеттi техникалық жабдықтар. ... ... ... ... ... ... ... ... .
4.6Kiрiс мәлметтер енгiзу. ... ... ... ... ... ... ... ... ... ... ... ... ..
4.7Шығыс мәлметтер шығару. ... ... ... ... ... ... ... ... ... ... ...
5. Қорытынды. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
6. Қолданылған әдебиеттер. ... ... ... ... ... ... ... ... ... ... ... ... ... ..
Паскаль программалық тілi (белгiлi француз математигi және философы Блез Паскаль (1623-1662) атағына берiлген),1968-1971жж Швейцария жоғарғы политехникалық мектебiнiң ,информатика институтының директоры ,профессор Никлаус Вирт ойлап тапты. Кейннен тiлдiң талай нұсқалары жарыққа шығады. Солардың iшiнде1983 жылы Borland корпорациясының қызметкер Андерсон Хейлсбергтiң жасаған жаңа үлгiсi-Turbo Pascal программалаушылар арасында үлкен сұранысқа ие болды.
Turbo Pascal-жоғарғы деңгейлi программалау жүйесi.Оның логикалық құрылымы әр түрлi есептердi дәл шешуге ыңғайлы. Turbo Pascal жүйесiнде қарапайым есептердi шешудiң программасынан бастап, күрделi мәлiметтер қорын құруды сан қырлы жұмыстары жүргiзiледi.
Оның программисттер арасында жиi қолданылуы келесi себептерге сай:
• Тiлдiң ыңғайлылығына және үйренуге жеңіл болды.
• Бұл тiл структуралық программа құруға,ұйымдастыруға мүмкiндiк бердi.
• Бұл тiл программаның дұрыстығын автоматы түрде тексере алды.
• Паскальда структуралық қолдануда қарапайым түрлерi болды:циклдер,бұтақталулар және т.б.
Менiң Паскальда құрған ойыным, ол негiзiнен программаның графикалық қасиеттерiн қолдана отырып және оңай циклдердi пайдалана отырып, координаттар әдiсiмен экрандағы суреттердi жылжытамыз.Негiзiнен алғанда Паскальда программалау ыңғайлы және түсiнiктi сондықтан оны түсiну оңай. Бұл программа сырттан қиын болса да, ол қарапайым тәсiлдер арқылы құрылған.
Бұл программада Паскаль оқу курсының барлық тараулары қарастырылған және әрбiр оператордың, процедураның, функцияның қасиеттерiн үйретуге себеп болады. Бұл программада әрбiр оператордың, процедураның, функцияның қасиеттерi қандай бағытта қолдануға және оны күнделiктi ойнап жүрген компьютер ойындарынан байқауға, бiлуге мүмкiндiк бередi.Яғни ол бала озi ойнап отырған ойынының құрылған программасын елестете алады және программалаудың қыр-сырын бiле бастайды.Ал қосымша, бұл программаға жасалған блок-схемасы программаның орындалуын жүйелi түрде түсiне алады.
Сонымен бұл ойынның мақсаты 3 аттың бiреуiн таңдап оған ақша қойып ұтысқа ие болу.Аттардың қайсысы бiрiншi келетiнiн тек қана компьютер шешедi сондықтан бұл ойын әдiлеттi де қызықты болады деп ойлаймын.
1. Алексеев Е.Р., Чеснокова О.А., Павлыш В.Н., Славинская Л.В., ТУРБО ПАСКАЛЬ 7.0 численные методы, Москва 2004;
2. Попов В.Б. TUPBO PASCAL для школьников, Санкт-Петербург 2002;
3. С.A Немнюгин TUPBO PASCAL практикум-Санкт-Петербург “Питер”, 2001;
4. О.П Зеленяк . Практикум программирования на TUPBO PASCAL –М*Санкт-Петербург *Киев,2002;
5. А.И Гусев Учимся программировать:Pascal 7.0 Москва 2002;
6. Ж.Қ. Масанов, Б.А. Бельгибаев, А.С. Бижанов Қ.Қ. Мақұлов TUPBO PASCAL Алматы 2004;
7. Фаронов В.В. Турбо Паскаль 7.0 Начальный курс.-М.:Нолидж,1997;
8. Фаронов В.В. Турбо Паскаль 7.0 Практика программирования.-М.:Нолидж,1997;
9. А.У Муртазина Б.Б Тусупова Основы программирования на языках Паскаль и СИ Методические указания Часть 1 Алматы-2004;
10. Культин С.В Турбо Паскаль в задачах и примерах Алматы 2003;

Қазақстан Республикасының Білім және Ғылым Министірлігі
Қ.И.Сатбаев атындағы Қазақ Ұлттық Техникалық Университеті
Техника және кибернетика кафедрасы

Курстық жұмыс

Орындаған:____________

Тексерген:____________

Группа:____________

Алматы 2004

Мазмұны
Кiрiспе
1. Есеп
қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
... ... ... ... ..
2. Қолданылған
әдiстер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
3. Есеп алгоритмi.
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
4. Бадағрламаның баяндалуы.
... ... ... ... ... ... ... ... ... ... ... ... ...
4.1Жалпы мағлұмат.
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
4.2Функциялардың тағайындалуы.
... ... ... ... ... ... ... ... ... .
4.3Логикалық құрылымның баяндалуы. ... ... ... ... ... ... ...
4.4Шақыру және жүктеу.
... ... ... ... ... ... ... ... ... ... ... ... ...
4.5Қажеттi техникалық жабдықтар.
... ... ... ... ... ... ... ... .
4.6Kiрiс мәлметтер енгiзу.
... ... ... ... ... ... ... ... ... ... ... ... ...
4.7Шығыс мәлметтер шығару.
... ... ... ... ... ... ... ... ... ... ...
5. Қорытынды.
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
... .
6. Қолданылған әдебиеттер.
... ... ... ... ... ... ... ... ... ... ... ... ... ...

Кiрiспе
Паскаль программалық тілi (белгiлi француз математигi және философы
Блез Паскаль (1623-1662) атағына берiлген),1968-1971жж Швейцария жоғарғы
политехникалық мектебiнiң ,информатика институтының директоры ,профессор
Никлаус Вирт ойлап тапты. Кейннен тiлдiң талай нұсқалары жарыққа шығады.
Солардың iшiнде1983 жылы Borland корпорациясының қызметкер Андерсон
Хейлсбергтiң жасаған жаңа үлгiсi-Turbo Pascal программалаушылар арасында
үлкен сұранысқа ие болды.

Turbo Pascal-жоғарғы деңгейлi программалау жүйесi.Оның логикалық
құрылымы әр түрлi есептердi дәл шешуге ыңғайлы. Turbo Pascal жүйесiнде
қарапайым есептердi шешудiң программасынан бастап, күрделi мәлiметтер қорын
құруды сан қырлы жұмыстары жүргiзiледi.
Оның программисттер арасында жиi қолданылуы келесi себептерге сай:
• Тiлдiң ыңғайлылығына және үйренуге жеңіл болды.
• Бұл тiл структуралық программа құруға,ұйымдастыруға мүмкiндiк
бердi.
• Бұл тiл программаның дұрыстығын автоматы түрде тексере алды.
• Паскальда структуралық қолдануда қарапайым түрлерi
болды:циклдер,бұтақталулар және т.б.
Менiң Паскальда құрған ойыным, ол негiзiнен программаның графикалық
қасиеттерiн қолдана отырып және оңай циклдердi пайдалана отырып,
координаттар әдiсiмен экрандағы суреттердi жылжытамыз.Негiзiнен алғанда
Паскальда программалау ыңғайлы және түсiнiктi сондықтан оны түсiну оңай.
Бұл программа сырттан қиын болса да, ол қарапайым тәсiлдер арқылы құрылған.

Бұл программада Паскаль оқу курсының барлық тараулары қарастырылған
және әрбiр оператордың, процедураның, функцияның қасиеттерiн үйретуге себеп
болады. Бұл программада әрбiр оператордың, процедураның, функцияның
қасиеттерi қандай бағытта қолдануға және оны күнделiктi ойнап жүрген
компьютер ойындарынан байқауға, бiлуге мүмкiндiк бередi.Яғни ол бала озi
ойнап отырған ойынының құрылған программасын елестете алады және
программалаудың қыр-сырын бiле бастайды.Ал қосымша, бұл программаға
жасалған блок-схемасы программаның орындалуын жүйелi түрде түсiне алады.
Сонымен бұл ойынның мақсаты 3 аттың бiреуiн таңдап оған ақша қойып
ұтысқа ие болу.Аттардың қайсысы бiрiншi келетiнiн тек қана компьютер шешедi
сондықтан бұл ойын әдiлеттi де қызықты болады деп ойлаймын.
Сонымен iске сәт.

1.Есеп қойылымы.
“Ипподром”: Ойыншы жарысқа қатысқан үш аттың бiреуiн таңдайды,
егер сол ат бiрiншi келсе ол жеңiске жетедi.Аттардың жылдамдығы әр этапта
кездейсоқ сандар датчигi арқылы құрылған программа бойынша таңдалады. Қ

2.Қолданылған әдiстер.
1. Iздеу алгоритмдерi
Iздеу алгоритмдерi мысалы массивте белгiлi қасиеттерi бар
элементтердi табу үшiн қолданылады. Әдетте элементтiң алғашқы және соңғы
кiрулерiн iздеудегi есеп берiлгендерiмен ажыратады. Төменде келтiрiлген
барлық алгоритмдерде N бүтiн санды А массивiнде Х-қа тең элемент iздеу
керек деп есептеледi.
2.1. Сызықтық iздеу
Сызықтық iздеу екi еселi шарты бар циклмен (while немесе repeat -
until) орындалады. Бiрiншi шарт индекстiң массивке тиiстiлiгiн тексередi,
мысалы, (i=N). Екiншi шарт – бұл iздеудiң шарты. Бiздiң жағдайда while
циклiнде бұл iздеудi жалғастыру шарты: (A[i]X), ал repeat – until
циклiнде бұл iздеудi аяқтау шарты: (A[i]=X). Цикл денесiнде әдетте тек
жалғыз оператор: массивтегi индекстiң өзгеруi ғана жазылады.
Циклдан шыққаннан кейiн қай шарт бойынша шыққанымызды тексеруiмiз
керек. Әдетте if операторында циклдiң бiрiншi шартын қайталайды. Бұл шарт
орындалуын while циклi жағдайында шарттың орындалуын, ал repeat – until
циклiмен оның бұзылуы кезiнде сәттi iздеу деп айтуға болады.
Мысалы: Сызықты iздеу.
program Poisk;
var A:array[1..100] of integer;
N, X, i:integer;
begin
read(N); {N=100}
for i:=1 to N do
writeln('Массивтi енгiзiңiз');
read(A[i]);
writeln('Iзделiнетiн санды енгiзiңiз');
read(X);
i:=1; {i:=0;}
while (i=N) and (A[i]X) do i:=i+1;
{repeat i:=i+1; until (iN) or (A[i]=X);}
if i=N then write(' A массивiне ', i,' орында', X ,' санының бiрiншi
кiруi ')
else write('тапқан жоқпыз');
end.
Соңғы кiрудi iздеу кезiнде енгiзгеннен кейiн келесi операторлар жүру
керек.
i:=N; {i:=N+1;}
while (i=1) and (A[i]X) do i:=i-1;
{repeat i:=i-1; until (i1) or (A[i]=X);}
if i=1 then write(' A массивiне ', i,' орында', X ,' санының соңғы кiруi
')
else write('тапқан жоқпыз');
3.1. Тосқауылы бар iздеу
Тосқауылы бар iздеу әрбiр рет массив шекарасымен байланысқан циклдегi
шартты iздей бермеу идеясынан тұрады. Бұны массивке тосқауыл орнату: iздеу
шартын қанағаттандыратын кез-келген элемент орнату арқылы жүзеге асыруға
болады. Бұл жағдайда индекстiң өзгеруiне шек қойылады.
Ендi тек iздеу шарты ғана қалып, табылған элементте немесе тосқауылда
циклдан шығуға болады. Мұндай жағдайда циклдан шыққаннан кейiн бiз
тосқауылды тапқан жоқ па екендiгi тексерiледi. Тосқауылы бар iздеудi
есептеу қиындығы сызықтыға қарағанда төмен, бiрақ сондай тiзбектi өлшемiдi,
N – массив элемент саны бар.
Тосқауылды орнатудың екi тәсiлi бар: қосымша элемент немесе массивтiң
ең шеткi элементiнiң орнына.
Мысалы: Тосқауылы бар iздеу
program Poisk2a;
var A:array[1..101] of integer;
N,X,i:integer;
begin
read(N); {N=100}
for i:=1 to N do
writeln('Массивтi енгiзiңiз');
read(A[i]);
writeln('Iзделiнетiн санды енгiзiңiз');
read(X);
A[N+1]:=X; {қосымша элемент арқылы тосқауыл қою}
i:=1; {i:=0;}
while A[i]X do i:=i+1;
{repeat i:=i+1; until A[i]=X;}
if i=N then write(' A массивiне ', i,' орында', X ,' санының бiрiншi
кiруi ')
else write('тапқан жоқпыз');
end.
program Poл;
var A:array[1..100] of integer;
N,X,i,y:integer;
begin
read(N); {N=100}
for i:=1 to N do read(A[i]);
read(X);
y:=A[N]; {соңғы элементтi сақтау}
A[N]:=X; {тосқауылды массивтiң соңғы орнына орнату}
i:=1; {i:=0;}
while A[i]X do i:=i+1;
if (iN) or (y=X) then
write(' A массивiне ', i,' орында', X ,' санының бiрiншi кiруi ')
else write('тапқан жоқпыз');
A[N]:=y;
end.
4.1. Екiлiк (бинарлы) iздеу
Екiлiк iздеу алгоритмiн берiлген қасиетi бар элементтi iздеу тек сол
қасиет бойынша реттелген массивтен табуға болады. Сонымен берiлген мәнi бар
элементтi элементтерi өспелi не кемiмелi массивтен табуға болады. Ал,
мысалы, берiлген цифрлар қосындысы бар санды табу үшiн, массив
элеметтерiнiң цифрлары қосындысының өсу не кему ретiмен орналасуы қажет.
Алгоритм идеясы массив әрбiр рет қақ бөлiнiп, берiлген элемент жатуы
мүмкiн бөлiгi алынады. Бөлiну iздеуге арналған массив бөлiгiнiң бiр
элементтен көп болғанша жүрiп, содан кейiн сол қалған элементтi берiлген
iздеу шартына орындалатындығы тексерiледi.
Бұл алгоритмнiң бiрiншi және соңғы кiрулердi iздеуге арналған екi
модификациясы бар. Бұл орташа элемент қалай таңдалынатындығына байланысты:
кiшi не үлкен жаққа қарай дөңгелектенуi. Бiрiншi жағдайда орташа элемент
массивтiң сол жағына, ал екiншi жағдайда оң жағына тиiстi болады.
Екiлiк iздеу алгоритм жұмысы процесiнде iздеу жүргiзiлуi қажеттi
фрагмент бөлiгi әрбiр рет шамамен екi есе азаю керек. Бұл алгоритмнiң
есептеу қиындығы 2 негiзi бар N логарифмдi дәрежеге тең, мұндағы N – массив
элементтерiнiң саны.
Мысалы: Х санының өсу ретiмен орналасқан массивке енуiн iздеу
program Poisk3a;
var A:array[1..100] of integer;
N,X,left,right,i,c:integer;
Begin
Writeln(‘массивтiң өлшемiн енгiз’);
read(N); {N=100}
writeln('өсу ретiмен массив енгiзiңiз');
for i:=1 to N do read(A[i]);
writeln(‘өз элементiңдi енгiз’);
read(X);
left:=1; right:=N;
{iздеуге арналған сол және оң шекара фрагменттерi}
while leftright do
begin
c:=(left + right) div 2;
{кiшi жаққа қарай дөңгелектелiнген орта}
if XA[c] then
{егер массив кему ретiмен енгiзiлсе, онда if XA[c]}
left:=c+1
{left ауыстыра отырып ортасыз оң жағын аламыз}
else right:=c;
{right ауыстыра отырып ортасыз сол жағын аламыз }
end;
if X=A[left] then {мұндағы left = right, бiрақ әрқашан емес = c}
writeln(' A массивiне ', left,' орында', X ,' санының соңғы кiруi ')
else writeln('тапқан жоқпыз');
end.

2. Сұрыптау алгоритмдерi

Сорттаудың ең қарапайым есебi массив элементтерiнiң өсу не кему
ретiмен орналастыру болып табылады. Басқа есеп болып, берiлген белгiлер
бойынша массив элементтерiн реттеу. Әдетте мұндай белгi ретiнде аргументi
массив элементтерi болып табылатын белгiлi функция мәнi болып табылады. Бұл
функцияны реттеушi функция деп атау қабылданған.
Сорттаудың әр түрлi тәсiлдерi бар. Әрбiр тәсiлдi N бүтiн сандардан
өспелi массивтi сорттау мысалында көрсетемiз.

1.2. Таңдау арқылы сұрыптау

Тәсiл идеясы массивтiң максималды элементiн тауып, оны соңғы элемент
(N номерлi) орнымен ауыстырылады. Содан кейiн максималды элемент N-1 орынға
дейiн iзделiп, сол N-1 орынға қойылады және т.с.с. Максимум емес, минимум
элемент iзделiп, оны бiрiншi, екiншi және т.с.с. орынға қоюға болады.
Сонымен қатар бұл әдiстiң модификацияланған түрi – бiр мезетте максимум
және минимум элементтердi iздеу қолданылады. Бұл жағдайда сыртқы циклдың
қадамдар саны N div 2.
Таңдау арқылы сорттаудың есептеу қиындығы - N*N шамасының өлшемi,
әдетте оны O(N*N) деп жазады. Бұл салыстырулар саны бiрiншi максимумды
iздегенде N-1-ге тең, содан кейiн N-2, N-3 және т.с.с. 1-ге дейiн, соымен
N*(N-1)2 болумен түсiндiрiледi.
Мысалы: А массивiнiң N бүтiн сандарының өсуi бойынша таңдау арқылы
сорттау.
program Sort_Vybor1;
var A:array[1..100] of integer;
N,i,m,k,x : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
for k:=n downto 2 do { k – max-ты iздеуге қажеттi элементтер саны }
begin
m:=1; { m - max орны}
for i:=2 to k do if A[i]A[m] then m:=i;
{ m және k номерлi элементтердi орындарымен ауыстырамыз}
x:=A[m]; A[m]:=A[k]; A[k]:=x;
end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.
Мысалы: Жоғарыдағы есеп, бiрақ бiр мезеттегi max пен min таңдау
арқылы.
program Sort_Vybor2;
var A:array[1..100] of integer;
N,i,m,k,x,p : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
for k:=1 to n div 2 do { k - max және min жұбының орны }
begin
m:=k; { m - max орны }
p:=k; { p – min орны }
{max және min k-дан n-k+1 элементтер арасында iзделедi }
for i:=k+1 to n-k+1 do
if A[i]A[m] then m:=i
else if A[i]A[p] then p:=i;
{ p және k номерлi элементтердi орындарымен ауыстырамыз }
x:=A[p]; A[p]:=A[k]; A[k]:=x;
if m=k then m:=p;
{егер max k орында тұрса, ендi ол p орында тұр }
{ m және n-k+1 номерлi элементтердi орындарымен ауыстырамыз }
x:=A[m]; A[m]:=A[n-k+1]; A[n-k+1]:=x;
end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.

3.2. Айырбаспен сорттау (“көпiршik” тәсiлiмен)

Тәсiл идеясы рет бойынша массивтiң көршiлес жұптары тексерiлуiнде
құрылған. Егер олар керектi реттiлiкте болмаса, онда көршiлес элементтер
жұбын орындарымен ауыстырамыз. Мұндай бiр өтуден кейiн N номерi орынында
максимал элемент орналасады (бiрiншi көбiкше “қалқып” шықты). Келесi өту N-
1 элементке дейiн қарастыру керек және т.с.с. Барлығы N-1 өту қажет болады.
Айырбаспен сорттаудың есептеу қиындығы O(N*N).
Мысалы: А массивiнiң N бүтiн сандарының өсуi бойынша айырбаспен
сорттау.
program Sort_Obmen1;
var A:array[1..100] of integer;
N,i,k,x : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
for k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
for i:=1 to k do
if A[i]A[i+1] then
{көршiлес элементтердi орындарымен ауыстырамыз}
begin x:=A[i]; A[i]:=A[i+1]; A[i+1]:=x; end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.

4.2. Шейкерлi сұрыптау

Бұл алгоритм негiзiнен айырбас арқылы сорттаудың модификациясы болып
табылады. Айырмашылығы айырбас арқылы сорттауда өтулер бiр жақты ғана
болса, мұнда бағыт әрбiр рет сайын өзгерiп отырады. Сонымен қатар шейкерлi
сорттауда айырбас фактi мен айырбастың соңғы орнын анықтауға болады.
Негiзгi алгоритмде екiлiк өтулер саны N div 2-ге теi. Шейкерлi сорттаудың
есептеу қиындығы O(N*N).
Мысалы: N бүтiн сандардан құралған А массивiн Шейкерлi сорттау арқылы
өсу ретiмен орналастыру.
program Shaker;
var A:array[1..100] of integer;
N,i,k,x,j,d : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
for i:=1 to n do
writeln('Массивтi енгiзiңiз');
read(A[i]);
d:=1; i:=0;
for k:=n-1 downto 1 do { k – салыстырылатын жұптар саны }
begin
i:=i+d;
for j:=1 to k do
begin
if (A[i]-A[i+d])*d0 then
{көршiлес элементтердi орындарымен ауыстыру}
begin x:=A[i]; A[i]:=A[i+d]; A[i+d]:=x; end;
i:=i+d;
end;
d:=-d;
{қозғалыс бағытын қарама-қарсыға өзгертемiз}
end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.

5.2. Қосу арқылы сұрыптау
Берiлген тәсiлдiң идеясы әрбiр рет К элементтен тұратын реттелген
массивке реттеулiгi өзгермейтiндей етiп тағы бiр элемент қосамыз. Сорттаалу
массив енгiзiлумен қатар жүрiп отыруы мүмкiн.
Сорттау алдында массивтiң реттелген бөлiгi тек бiр ғана элементтен
тұрады, ол бөлек енгiзiледi немесе егер массив бар болса және ол жалғыз
және дұрыс орында тұр деп есептеледi.қосылатын элементке орын iздеудiң
әртүрлi тәсiлдерi қосу арқылы сорттаудың түрлi модификацияларына алып
келедi.
Сызықты iздеудi қолданғанда, қосу арқылы сорттаудыi есептеу қиындығы
O(N*N), ал екiлiк iздеу кезiнде - O(N*LogN) (негiзi 2 болатын логарифм)
болады.
Мысалы: N бүтiн сандардан құралған А массивiн сызықты iздеуi бар қосу
арқылы сорттау арқылы өсу ретiмен орналастыру.
program Sort_Include1;
var A:array[1..100] of integer;
N,i,k,x : integer;
begin
write('Массив элементтерiнiң саны ');
read(N);
writeln('Массивтi енгiзiңiз');
read(A[1]); {for i:=1 to n do read(A[i]);}
{k – массивтiң реттелген бөлiгiндегi элементтер саны}
for k:=1 to n-1 do
begin
read(x); {x:=A[k+1];}
i:=k;
while (i0)and(A[i]x) do
begin
A[i+1]:=A[i];
i:=i-1;
end;
A[i+1]:=x;
end;
for i:=1 to n do write(A[i],' '); {реттелген массив}
end.
Мысалы: N бүтiн сандардан құралған А массивiн екiлiк iздеуi бар қосу
арқылы сорттау арқылы өсу ретiмен орналастыру.
program Sort_Include2;
var A:array[1..100] of integer;
N,i,k,x,c,left,right : integer;
begin
write('Массив элементтерiнiң саны');
read(N);
writeln('Массивтi енгiзiңiз');

read(A[1]); {for i:=1 to n do read(A[i]);}
{k ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Диоксиндердің адамға әсері
“Ипподром”
Дизайн қызметінің жалпы типологиясы
Turbo pascal тілі туралы ақпарат
Жылқы шаруашылығының зоогигиеналық жағдайы
Мініс жылқыларын сынау, бәйгеге қосу
Информатиканы қосымша оқытудың мақсаттары
Атлантида ол қандай болған?
Жылқы малы қазақ халқының ежелден келе жатқан, тарихи қалыптасқан түлігі
Программалау жүйесі маңызы
Пәндер