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



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

 
93 
 ptf=b; 
 for(i=0; i<4; i++) 
 printf("нұсқауыштар +% d: %8u  %10u\n",i,pti+i,ptf+i); 
}  
Мҧның нәтижесі: 
нұсқауыштар + 0:   65518   
65498 
нұсқауыштар + 1:   65520   
65502 
нұсқауыштар + 2:   65522   
65506 
нұсқауыштар + 3:   65524   
65510 
Келесі мысалды қарастырайық. 
(a+2)==&a[2]; 
*(a+2)==a[2]; 
Бҧлар нҧсқауыштар мен жиымның арасындағы байланысты анықтайды, яғни 
жиымның  жеке  элементін  анықтау  ҥшін  немесе  оның  мәнін  пайдалану  ҥшін 
нҧсқауышты қолдануға болады.  
5.4.3 Нұсқауыштарды пайдаланып жиымдармен жұмыс істеу 
Жиымдарды  функция  арқылы  қарастырып,  содан  кейін  осы  функцияны 
нҧсқауыштарды пайдаланып жазып шығу керек болсын.  
1-мысал. Функция арқылы жиым қосындысын табу. 
// функция арқылы жиым қосындысын табу 
#include  
#include  
int f1(int a[], int t) 

 int i, sum=0; 
 for(i=0; i
    sum+=a[i]; 
 return (sum); 

main() 
{ int i,s,b[10]={5,6,14,12,30,5,9,7,15,5}; 
  clrscr(); 
  s=f1(b,10); 
  printf("s=%d", s); 
  getch(); 
} 
Негізгі  программада  f1  функциясын  шақыру  ҥшін  нақты  параметрлерді 
жазып, функция келесі тҥрде шақырылып отыр: 
f1(b,10); 
2-мысал. Нҧсқауышты функцияда (f1) пайдалану программасын жазайық.  
// функцияда нұсқауыш арқылы жиым қосындысын табу 
#include  
#include  
int f1(int *pa, int t) 


 
94 

 int i,sum=0; 
 for(i=0; i
    sum +=*(pa+i); 
 return (sum); 

main() 
{ int i,s,b[10]={5,6,14,12,30,5,9,7,15,5}; 
  clrscr(); 
  s=f1(b,10); 
  printf("s=%d",s); 
  getch();  

программада осы f1 функциясын шақыру ҥшін нақты параметрлер бҧрынғыдай 
жазыла береді:  f1(b,10); 
5.4.4  Нұсқауыштарға қолданылатын операциялар 
С тілінде нҧсқауыш типті айнымалыларға бес тҥрлі оператор қолдануға болады: 
1)  меншіктеу операциясы. Нҧсқауышқа адресті меншіктеуге болады. Жиымның 
атын  қолданып  немесе  адресті  анықтайтын  &  операторын  пайдаланып, 
әдетте адресті меншіктеуге болады; 
2)  мәнді  анықтау.  Берілген  адрес  бойынша  кейбір  ҧяшықта  сақталатын  мәнді 
анықтау ҥшін  * операциясы қолданылады; 
3)  нҧсқауыштың  адресін  анықтау.  Кез  келген  айнымалылар  сияқты  нҧсқауыш 
типті  айнымалылар  мәні  немесе  адресі    болуы  мҥмкін.  &  операциясы 
арқылы нҧсқауыштың адресін анықтауға болады;  
4)  нҧсқауыштарды арттыру. Бҧл амал әдеттегі + операциясы кӛмегімен немесе 
арттыру  операциясы  арқылы  орындалуы  мҥмкін.    Нҧсқауышты  арттырып, 
жиымның  келесі  элементіне  ӛтуге  болады  (қажет  болса,  нҧсқауыш  мәнін 
кемітуге де болады);   
5)  нҧсқауыштардың 
айырмасы. 
Бір 
жиымның 
элементіне 
сілтейтін 
нҧсқауыштың айырмасын табуға болады. Жиым элементінің арасындағы ара 
қашықтығын анықтау ҥшін нҧсқауыштың айырмасын есептеуге болады. 
1-мысал. 
/* Жиымның максимумын тауып, одан кейінгі элементтерін 
кемуі бойынша реттеп орналастыру */ 
#include  
#include  
#include  
#define  n  10 


 
95 
жоқ 
иә 
басы 
k = 0, 9, 1 
x
min 
= x

n = k 
i=k+1,10,1 
x
i
< x
min
 
x
min 
= x

n = i 
x

= x

x

= x
min
 
х-ті шығару
 
х енгізу 
соңы 
5.3-сурет. Жиым элементтерін 
ӛсуі бойынша реттеу 
main() 
{ int i, j, t, c; 
  int a[n]={6,5,9,8,7,4,1,2,3,0}; 
  int *pa, max; 
  clrscr(); 
  printf("a[10] элементтерi : "); 
  for(i=0; i
     printf(" %d ",a[i]); 
  pa=a; max=*pa; t=0;  
/* максимумды және оның  индексін 
табу  */ 
for(i=1; i
 if((*(pa+i)) > (max)) 
  {max = *(pa+i); t=i; } 
 printf("\nmax = %d оның индексі =  
                 %d\n", max, t); 
for(i=t; i
/* элементтерді кемуі бойынша */ 
for(j=i+1; j
if(*(pa+i) < *(pa+j)) 
 { c=*(pa+i); /* жиымның екі  
           элементін алмастыру */ 
   *(pa+i)=*(pa+j); 
   *(pa+j)=c; 
 } 
 printf("\n нәтиже : "); 
for(i=0; i
    printf("%d  ", *(pa+i)); 
getch(); 

  
2-мысал.  Берілген  х
10 
жиым  элементтерін  сол  жиымда  ӛсу  реті  бойынша 
орналастыру керек (5.3-сурет). 
#include  
#include  
#include  
main() 
{  
  int xmin,x[10]; 
  int n,k,i; 
  clrscr(); 
  printf("\nБерілген жиым элементтері:"); 
  for(k=0; k<10; k++) 
  {x[k] = rand() % 100;  /* 32767-ге дейінгі кездейсоқ 
сандарды 100-ге бөліп, қалдықтарын алу */ 


жүктеу 2,9 Mb.

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




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

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