Программалау тілдері жоғары оқу орындарына арналған оқулық



жүктеу 2,9 Mb.
Pdf просмотр
бет34/82
Дата19.11.2018
өлшемі2,9 Mb.
#20460
түріПрограмма
1   ...   30   31   32   33   34   35   36   37   ...   82

 
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; isum
 
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-сурет. Жиымның арифмети-
калық ортасын анықтау 


жүктеу 2,9 Mb.

Достарыңызбен бөлісу:
1   ...   30   31   32   33   34   35   36   37   ...   82




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау