|
Программалау тілдері жоғары оқу орындарына арналған оқулықНавигация по данной странице:
- min=a[i];n_min=i; // минимумды іздеу for(j=i+1;j if(a[j] { min=a[j];n_min=j; } a[n_min]=a[i]; //алмастыру
- 5.3.3 Жай алмастыру арқылы сұрыптау
- {int r=a[j];a[j]=a[j-1];a[j-1]=r;}
- /*жиымның жұп элементтерi қосындысы*/ include include include main() {
- // 0, 2, 4... индекстi элементтердi қосу printf("\nЖиымның жұп элементтерi қосындысы: %d",sum); getch(); //нәтижелiк экранды жапқызбай көру }
- /* А[10] жиымынын арифметикалық ортасын табу */ 89 include
- %5.2f",(float)s/n); printf("\nАяқтау yшiн Enter басыңыз"); getch(); }
- /* Жиым максимумын табу */ include include define n 10 main() { int i,t,a[n]={6,5,9,8,7,4,1,2,3,0},max;
87
min=a[i];n_min=i; // минимумды іздеу
for(j=i+1;j
if(a[j]
{ min=a[j];n_min=j; }
a[n_min]=a[i]; //алмастыру
a[i]=min;}
5.3.2 Жай енгізу (кірістіру) тәсілімен сұрыптау
Жиым элементтері екіге – бастапқы тізбекке және дайын тізбекке бӛлінеді.
Әрбір адымда I=2 нӛмірінен бастап, бастапқы берілген тізбектен I-ші элемент
алынады да, ол дайын тізбектің керекті жеріне орналастырылады. Мҧнан кейін
I-ге 1 қосылады да, сол әрекеттер қайталанады.
44
55
12
42
94
18
дайын тізбек
бастапқы тізбек
Керекті орынды іздеу кезінде оң жақтағы келесі элементпен орын ауыстыру
қарастырылады, яғни таңдалып алынған элемент сҧрыпталғандардың J=I-1
нӛмірінен басталатын кезекті элементімен салыстырылады. Егер таңдалып
алынған элемент a[I]-ден артық болса, онда ол сҧрыпталғандар ішіне қосылады,
әйтпесе a[J] бір орынға ығысады да, таңдалған элемент сҧрыпталғандар
ішіндегі келесі элементпен салыстырылады. Керекті орынды іздеу әрекеті екі
жағдайда:
- егер a[J]>a[I] болатын элемент табылса;
- дайын тізбектің сол жақ шетіне жеткен кезде аяқталады.
Мысалы:
int i,j,x;
for(i=1;i
{ x=a[i];//ауысатын элементті есте сақтау
j=i-1;
while(x=0) //керекті орынды іздеу
{
a[j+1]=a[j]$ //оңға жылжыту
j--;
}
a[j+1]=x;//элементті кірістіріп қою
}
5.3.3 Жай алмастыру арқылы сұрыптау
Мҧнда ең соңғыдан бастап, екі элемент салыстырылады да, қажет болса,
орындары алмастырылады. Осындай әрекет нәтижесінде ең кіші элемент
жиымның ең сол жақ шетіне ығысады. Қалған жиым элементтері ҥшін де осы
процесс қайталанады.
44
55
12
42
94
18
for(int i=1;i
for(int j=n-1;j>=i;j--)
88
басы
i=0; i
i=i+1
a[i]
= rand() % 100 -50
i = 0; i sum
n енгізу
соңы
sum=0
sum=sum+a[i];
5.1-сурет. Жиымның жҧп
элементтерін қосу
if(a[j]
{int r=a[j];a[j]=a[j-1];a[j-1]=r;}
1-есеп. Бҥтін оң және теріс сандардан тҧратын a[n] жиымының жҧп нӛмірлі
элементтерінің қосындысын табу керек, мҧнда n саны енгізіледі, ал жиым
элементтерінің мәндері кездейсоқ бҥтін сандардан тҧрады.
rand() функциясы 0...32767 аралығындағы бҥтін сан береді. Оны пайдалану
ҥшін stdlib.h директивасын, яғни тақырып файлын қолдану қажет. Жиым
элементтері екі разрядты оң және теріс сандардан тҧруы ҥшін алынған
кездейсоқ сан 100-ге бӛлініп, қалдығынан 50 алып тасталынған (5.1-сурет).
/*жиымның жұп элементтерi
қосындысы*/
#include
#include
#include
main()
{
int a[50];
int n;
printf("\nЖиымда неше элемент
бар? ");
scanf("%d",&n);
printf("Жиым элементтерi:\n");
for(int i=0;i
{
a[i]=rand()%100-50;
/* жиымға 0 - 50
аралығындағы кездейсоқ сандарды
меншiктеу */
printf("%d, ",a[i]);
// сандарды экранда бейнелеу
}
int sum=0;
for(i=0;i
sum+=a[i];
// 0, 2, 4... индекстi элементтердi қосу
printf("\nЖиымның жұп элементтерi қосындысы: %d",sum);
getch(); //нәтижелiк экранды жапқызбай көру
}
2-есеп. Бҥтін сандардан қҧралған А(10) бір ӛлшемді жиымы берілген. Сол
жиым элементтерінің арифметикалық ортасын табу керек.
/* А[10] жиымынын арифметикалық
ортасын табу */
89
#include
#include
#define n 10
main()
{int i=0, s=0, a[n];
textcolor(RED);
//экран символдары қызыл түстi
textbackground(GREEN);
// экран фоны жасыл түстi
clrscr();
printf ("Жиым элементтерiн
- 10 сан енгiзiңiз:\n");
while (i
{printf("a[%i]=",i);
scanf("%i",&a[i]);
s=s+a[i];
i=i+1;
}
printf("Жиым арифметикалық ортасы : %5.2f",(float)s/n);
printf("\nАяқтау yшiн Enter басыңыз");
getch();
}
3-есеп. Бҥтін сандардан тҧратын А
10
жиымы берілген. Сол жиымның ең
ҥлкен элементін – максимумын және оның индексін анықтау керек.
/* Жиым максимумын табу */
#include
#include
#define n 10
main()
{ int i,t,a[n]={6,5,9,8,7,4,1,2,3,0},max;
textcolor(BLUE);
textbackground(YELLOW);
clrscr();
printf("a[10] элементтерi : ");
for(i=0; i
printf(" %d ",a[i]);
max=a[0]; t=0; // max - максимум, t - оның индекci
for(i=1; i
if (a[i] > max) {max = a[i]; t=i;}
printf("\nmax = %d, индексi = %d\n", max, t);
getch();
}
4-есеп. Нақты сандардан тҧратын А[15] жиымы берілген. Жиымның оң
элeменттерінің геометриялық ортасын анықтау керек.
иә
басы
a[i] енгізу
s/n
соңы
s=s+a[i]; i=i+1;
n = 10; i = 0; s = 0;
i < n
жоқ
5.2-сурет. Жиымның арифмети-
калық ортасын анықтау
Достарыңызбен бөлісу: |
|
|