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


С тілінде кездейсоқ сандарды пайдалану



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

 
83 
5.1 С тілінде кездейсоқ сандарды пайдалану 
С тілінде кездейсоқ сандар беретін функциялар  бар. 
int  rand()    –    0..RAND_MAX=32767    аралығынан  кез келген  кездейсоқ  
бҥтін сан береді.  
Ал int random(n) 0..n аралығынан кез келген кездейсоқ  бҥтін сан береді. 
Бҧл функцияларды пайдалану  файлы арқылы орындалады. 
Мысалы: 
//a[n] жиымына кездейсоқ сандар енгізу 
#include 
#include 
#include 
void main() 

int a[100]; 
int n; 
printf("\nEnter the size of array:", n); 
scanf("%i",&n); 
for(int I=0;I
{a[I]=rand()%100-50; 
 printf(" %i ", a[I]);} 
 getch(); 

5.2 Жиымды өңдеу есептерінің түрлері (кластары)  
Жиымды ӛңдеу есептері кӛбінесе бірыңғайланған тӛрт тҥрге бӛлінеді. 
1)  Есептердің  1-тҥріне  жиым  элементтерінің  барлығын  немесе  кӛрсетілген-
дерін бірдей бір тәсілмен ӛңдеу есептері жатады.  
2)  Есептердің  2-тҥріне  (класына)  жиым  элементтерінің  орналасу  реттілігін 
ӛзгерту тәсілдері жатады.  
3)  Есептердің 3-класына бірнеше жиымдарды қатар ӛңдеу немесе бір жиымның 
ішкі  элементтерін  бірнеше  топқа  бӛліп  жеке-жеке  ӛңдеу  тәсілдері  жатады. 
Жиымдар  бір  тәсілмен  синхронды  ӛңделеді  немесе  әртҥрлі  тәсілмен    асин-
хронды тҥрде ӛңделеді.  
4)  Есептердің 4-класына  жиымның берілген санға тең бірінші элементін табу, 
яғни іздеу есептері жатады. 
5.2.1  Бірінші түрдегі есептер  
1-есеп. Жиымның ең үлкен элементін анықтау керек. 
// максимум табу 
#include 
#include 
#include 
void main() 
{ int a[100],  n; 


 
84 
printf("\nEnter the size of array:", n); 
scanf("%i",&n); 
for(int I=0;I
{  a[I]=rand()%100-50; 
   printf("  %i  ", a[I]); 

int max=a[0]; 
for(I=1;I
if (a[I]>max) max=a[I]; 
printf("\nMax= %i", max); 
getch(); 

 
2-есеп. Жиымның жұп индексті элементтері қосындысын анықтау. 
/* 0, 2, 4... индексті элементтер қосындысын табу */ 
#include 
#include 
#include 
void main() 
{ int a[100],  n; 
printf("\nEnter the size of array:", n); 
scanf("%i",&n); 
for(int I=0;I
{  a[I]=rand()%100-50; 
   printf(" %i ", a[I]); 

int Sum=0; 
for(I=0;I
Sum+=a[I];  
printf("\nSum= %i ", Sum); 
getch(); 

Соңғы циклді басқаша да қҧрастыруға болады: 
//Екінші тәсіл 
for(I=0;I
if(I%2==0) Sum+=a[I]; 
printf("\nSum= %i ", Sum); 
5.2.2  Екінші түрдегі есептер 
Жиым  ішіндегі  екі  элементтің  бір-бірімен  орнын  ауыстыру  ҥшін  қосымша 
тағы бір айнымалы керек болады. Мысалы, a[I] және a[J] элементтерінің орнын 
ауыстыру ҥшін қосымша R айнымалысы керек:  
         R=a[I]; a[I]=a[J]; a[J]=R; 
  
 


 
85 
3-есеп. Жиым элементтерін кері бағытта орналастыру. 
for(int i=0, j=n-1; i
{int r=a[i]; 
 a[i]=a[j]; 
 a[j]=r;} 
4-есеп. Жиымның қатар тҧрған екі элементін: 1 және 2, 3 және 4, 5 және 6, 
т.с.с. элементтерін бір-бірімен орын ауыстыру 
for(int i=0;i
{int r=a[i]; 
 a[i]=a[i+1]; 
 a[i+1]=r;} 
5 есеп. Жиым элементтерін k орынға солға (оңға) ығыстыру, яғни жылжыту. 
 
int k,i,t,r,n; 
 
printf(“k = “);  
 
skanf(“%d”,&k); 
 
for(t=0;t
 

r=a[0]; 
 
 
for(int i=0; i
 
 
 
a[i]=a[i+1]; 
 
 
a[n-1]=r; 
 

5.2.3  Үшінші класс есептері 
Жиымдарды  синхронды  тҥрде  ӛңдеуде  жиымдар  элементін  қарастыру 
кезінде  индекстер бірдей қадамға ӛзгереді. Мысалы, бҥтін сандардан қҧралған 
n  элементтерден  тҧратын  2  жиым  берілген  делік.  Жаңа  c  жиымы  мынадай 
формула арқылы алынады:  c[I]=a[I]+b[I]. 
for(int I=0; I
Жиымдарды  асинхрондық  ӛңдеу  кезінде  әр  жиым  индексі  ӛз  реттілігімен 
ӛзгеріп отырады.  
1-есеп.  Бҥтін сандардан қҧралған жиымдағы теріс элементтердің барлығын 
оның бас жағына орналастыру керек.  
int b[10];    //қосымша жиым 
int i,j=0; 
for(i=0;i
   if(a[i]<0){b[j]=a[i];j++;} 
   // а-дан b-ға теріс элементтерді көшіріп жазу 
for(i=0;i
   if(a[i]>=0){b[j]=a[i];j++;} 
   // а-дан b-ға оң элементтерді көшіріп жазу 
for(i=0;i
2-есеп. Жиымның барлық жҧп элементтерін жою керек. 
int b[10]; 
int i,j=0; 


 
86 
for(i=0;i
    if(a[i]%2!=0)    {b[j]=a[i];j++;} 
for(i=0;i
printf ("\n"); 
5.2.4  Төртінші класс есептері 
Іздеу есептерінде берілген шартқа сәйкес келетін элементті іздеп табу керек. 
Ол  ҥшін  жиым  элементтерін  біртіндеп  тізбектей  қарастырып  отырып  шартты 
тексеріп шығу қажет. Осылай ету барысында циклден шығудың екі жолы бар: 
-  керекті элемент табылғаннан кейін; 
-  жиым элементтері тегіс қаралып шықты, керекті элемент табылмады. 
1-есеп. Берілген k санына тең жиымның алғашқы элементін табу.  
 
int k; 
  printf("\nK="); 
  scanf(“%i”,&k); 
  int ok=0;//элемент табылғаны/табылмағаны белгісі 
  int i,nom; 
  for(i=0;i
    if(a[i]==k){ok=1;nom=i;break;} 
  if(ok==1) printf("\nnom=",nom); 
    else  printf("\nk-ға тең элемент жоқ!");  
5.3 Жиымды сұрыптау (іріктеу, реттеу) 
Сҧрыптау – берілген объектілер жиынын (сандарды) ҧсынылған реттілікпен 
қайта теріп орналастыру процесі.  
Жиымдарды  сҧрыптау  жылдамдығы  әртҥрлі  болады.  Қарапайым  сҧрыптау 
тәсілдері  n*n  рет  салыстыруды  керек  етеді,  мҧндағы  n  –  жиым  элементтері 
саны;    ал  жылдам  сҧрыптау  тәсілі  n*ln(n)  рет  салыстыруды  қажет  етеді. 
Қарапайым  тәсілдер  тҥсінуге  жеңіл,  ӛйткені  алгоритмі  тҥсінікті.  Кҥрделі 
тәсілдер аз әрекеттер санын керек еткенмен, операциялары кҥрделірек болады, 
сондықтан  элементтер  саны  аз  жиымдарға  қарапайым  тәсілдерді  қолданған 
дҧрыс.  
Қарапайым тәсілдер 3 топқа бӛлінеді: 
-  жай таңдау жолымен сҧрыптау;  
-  жай енгізу тәсілімен сҧрыптау; 
-  жай алмастыру тәсілімен сҧрыптау. 
5.3.1 Жай таңдау жолымен сұрыптау 
Жиымның ең кіші элементі анықталады да, ол бірінші элементпен орын 
ауыстырады. Қалған элементтермен де осы тәсіл қайталанады.  
44 
55 
12 
42 
94 
18 
 
 
минимум   
 
 
int  i, min, n_min, j; 
for(i=0;i



жүктеу 2,9 Mb.

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




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

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