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
k
n = k
i=k+1,10,1
x
i
< x
min
x
min
= x
i
n = i
x
n
= x
k
x
k
= 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-ге бөліп, қалдықтарын алу */
Достарыңызбен бөлісу: |