Birölçülü massivlər

Birölçülü massiv və ya vektor- eyni bir addan istifadə edən bir neçə eynitipli dəyişən olub hər bir dəyişənə girişi onun sıra nömrəsi ilə həyata keçirilir. Birölçülü massivi belə elan edirlər:

<Elementlərin_tipi>< massivin adı> [<elementlərin_ sa­yı>];

Bu zaman elementlərin sayı aşkar şəkildə verilməlidir, belə ki, kompilyatorun növbəti kompilyasiyası zamanı və sonra onu dəyişmək mümkün olmur. Məsələn,

int i_ arc [10];

char liter [80];

double d_mas [100];

Massivi elan edərkən yadda saxlamaq lazımdır ki, birinci elementin indeksi həmişə sıfra bərabərdir.

İndeksləri mümkün olmayan massivlərin elementlərinə müraciət olunan zaman massivə aid olmayan yaddaş sahəsinə müraciətlə əlaqədar səhvlər yaranır.

Birölçülü massivlərin emalı zamanı bir sıra tipik alqoritmlər istifadə olunur. Onlardan bir neçəsini verək.

Massivin elementlərinin daxil edilməsi:

const int m=10 ;

void main( )

{ float x[m];

for ( int i=0; i< m; i++)

{ printf ( “ \ nx [%d] = “ , i);

scanf ( “ % f “, & x [ i ]);

}

Massivin elementlərinin adlandırılması onun başlanğıc qiy­mətlərinin böyük mötərizədə göstərilməsi ilə həyata keçirilir.

int digits [ ]= { 0,1, 2, 3, 4, 5, 6, 7, 8, 9}

elanı avtomatik olaraq massivin ölçüsünü hesablayır və 10 elementdən ibarət massiv yaradır.

Massivin adlandırılması:

const int m=10;

void main()

{ double x[m]= { 12.2, 3.7, 4.2, 8.0,3, 1, 6.7, 9.1, 0.4, 5.5}

Əgər adlandırma zamanı massivin az sayda başlanğıc qiy­­mətləri verilibsə (onların ümumi sayına nisbətən), onda qalanlar sıfır qiymətlərlə adlandırılırlar. Başqa sözlə,

int digits [m]= {0, 1, 2, 3, 4};

elanı 10 tam elementdən ibarət massiv yaradır ki, onlardan ilk beşi ≠0, qalan beşi isə =0 olur. Lakin kvadrat mötərizədə verilən saydan çox qiymət versək kompilyator səhv haqqında məlumat verəcək.

Qeyd. Zəruri hallarda massiv-sabiti aşağıdakı kimi vermək olar:

cons int const arr [ ]= {5,4,3,2,1};

Onda massivin heç bir elementini dəyişmək olmaz.

Misal 7.1.Fibonaççi ədədi ardıcıllığının ilk 20 həddini hesab­la­yan proqram yazın.

Birölçülü massivlər - student2.ru

#include <stdio.h>

main()

{

int fib[20];

int i;

fib[0] = 0;

fib[1] = 1;

for (i=2; i<=19; i++)

fib[i] = fib[i-1] + fib[i-2];

clrscr();

for (i=0; i<=19; i++)

printf("%d . = %d\n", i, fib[i]);

}

Nəticə:

0. = 0

1.= 1

2. = 1

...

19. = 4181

Misal 7.2. Massivlərdə ikilik axtarış alqoritminin proq­ra­mı.

#include<iostream.h>

#include<iomanip.h>

#include<conio.h>

int ikilikaxtar(int [],int,int,int,int);

void printmassiv(int);

void printsetir(int[],int,int,int,int);

int main(int argc, char* argv[])

{

const int massiv=15;

int m[massiv],key,netice;

for(int i=0;i<massiv;i++) //verilenlerin massivdə

//yerləşdirilməsi

m[i]=2*i;

cout<<"0 - 28 arasinda axtarilan ededi daxil edin:- " ;

cin >> key;

printmassiv(massiv);

netice=ikilikaxtar(m,key,0,massiv-1,massiv);

if (netice !=-1)

cout<<endl<<key<<" Element " <<netice<<" nomreli indeksde tapilmishdir " <<endl;

else

cout<<endl<<key<<" tapilmamishdir "<<endl;

getch();

return 0;

}

//Ikilik axtarma

int ikilikaxtar(int b[],int seachkey,int low,int high,int size)

{

int middle;

while (low<=high){

middle=(low+high) /2;

printsetir(b,low,middle,high,size);

if(seachkey==b[middle])

return middle;

else if (seachkey<b[middle])

high=middle-1;

else

low=middle+1;

}

return -1;

}

void printmassiv(int size)

{

cout<<endl<<"Indeksler"<<endl;

for (int i=0;i<size;i++)

cout<<setw(3)<<i<<' ';

cout<<endl;

cout << "-------------------------------------------------------";

cout << endl;

}

void printsetir(int b[],int low,int mid,int high,int size)

{

for (int i = 0; i < size; i++)

if (i<low ||i>high)

cout<<" ";

else if (i==mid)

cout<<setw(3)<<b[i]<<'*';

else

cout<<setw(3)<<b[i]<<' ';

cout<<endl;

}

Nəticə:

Birölçülü massivlər - student2.ru

Birölçülü massivlər - student2.ru

Наши рекомендации