Еднодимензионални низи IV год.

Типовите податоци: целобројни, знаковни, логички, интервални, реални се нарекуваат прости типови податоци или неструктурни. Овие податоци претставуваат елементарни целини кои не можат да се разложуваат.

Постојат и структурни типови податоци, податоци кои се состојат од основни или прости (неструктурирани) типови на податоци и кои се третираат како сложена целина со точно дефинирана структура.Такви се низа битови, низа знаци, општа низа, множество запис, стек, ред, датотеки.
Податочните структури претставуваат колекција од податочни елементи. Во случај кога се работи со голем број истородни податоци, тие се организираат во посебни типови структури наречени низи (array). Низа претставува непрекината – последователна група на мемориски локации кои го имаат истиот тип. Низите може да содржат броеви или знаци. Во една низа сите податоци мора да бидат од ист тип, значи не е можно во една низа да се чуваат и броеви и знаци.
Низата може да биде еднодимензионална (кога едноставно се нарекува низа), дводимензионална (кога се нарекува матрица заради аналогија со матрици во математиката) и повеќедимензионална.

Декларирање еднодимензионална низа

Како и секоја друга променлива, така и низите мора да бидат декларирани пред да може да се користат. Во C++, низи се декларираат на следниот начин:

tip ime[N];

tip го означува податочниот тип на секој елемент од низата, 
N е бројот на елементи или должина на низата , 
ime е името на променливата преку кое ќе пристапуваме до елементите на низата.
Примери на декларации на низа:
int ocenka[6];  float a[20];

 

-  Полето ( низата ) треба да се декларира за да се обезбеди доволен простор (меморија) за податоците
-  Името на низата не смее да биде исто со името на друга низа или името на некоја од променливите. На пр., погрешно е да се декларира int a; и int a[15]; во една програма.

Пристап до елементите на еднодимензионална низа 

Елемент на низа се претставува со:    име[индекс], каде што индекс е број од 0 до број_на _елементи−1.

Прв елемент на секоја низа е неговиот нулти елементТака, првиот елемент е x[0], a i-тиот елемент е x[i-1]. 

Еднодимензионално поле (низа)

X[0]

X[1]

X[2]

...

...

X[i-1]

Името на низата е X (сите елементи имаат исто име и различен индекс)Редниот број на елементите во низата се вика индекс на елементот.

 Индексот мора да биде

- целобројна константа      X[3]
- целобројна променлива   X[a]
- целоброен израз               X[a*3-1]

Должината на декларираното поле не смее да се менува во текот на извршување на програмата.  Ако должината на полето е поголема од бројот на елементи на кои им е придружена вредност, останатите елементи добиваат вредност 0.

 Доделување вредност и иницијализација на низа

На елементите на низата може да се доделат вредности.
На пр., вредноста 5 на првиот елемент во низата X се поставува со: X [0]=5;


Доделување вредности на елементите на низа со иницијализирачка листа

Вредностите на сите елементи на низата може да се доделат со иницијализирачка листа, веднаш со декларација. Вредностите кои  се  доделуваат  на  елементите  се ставаат во големи загради и се одделуваат со запирка.

Пример:       int X [10]={3,4,2,5,53,3,5,255,5,4};


Доделување вредности на елементите на низа со наредбата for

Пример: 


for (i=0;i<6;i++)
{ cout<<"X ["<<i<<"]=";
      cin>>X [i]; }




Во C++, можеме да го искористиме операторот  sizeof()

       за да откриеме колку бајти зафаќа една низа - sizeof(array),

       но и од колку елементи е составена самата таа низа - преку делење на меморијата која ја зафаќа низата (sizeof(array)) со меморијата која ја зафаќа еден од нејзините елементи (на пример, sizeof(array[0])).

Бидејќи сите елементи зафаќаат иста количина на меморија (затоа што се од ист податочен тип) , оваа едноставна математичка операција

     sizeof(array) / sizeof(array[0])           ќе го даде точниот број на елементи во низата.



#include <iostream>
using namespace std;
int main()
{
int arr[10];
for (int i=0; i<10; i++)
{
cin >> arr[i]; //'i' se dvizi od 0 do 9!
}
int s = 0;
for (int i=0; i<10; i++)
s += arr[i]; //'i' se dvizi od 0 do 9!
cout << "Zbirot e: " << s << endl;
return 0;
}


#include <iostream>
using namespace std;
int main()
{
int arr[10] = {1, 2, 3, 4, 5};
//izlez: '1 2 3 4 5 0 0 0 0 0'
for (int i=0; i<10; i++)
cout << arr[i] << " ";
cout << endl;
double niza[] = {10.0, 15.0, 20.0, 25.0, 30.0};
cout << sizeof(niza) << endl; //pechati '40' (5 * 8)
cout << (sizeof(niza)/sizeof(niza[0])); //pechati '5'
return 0;
}

#include <iostream>
using namespace std;
int main()
{
char array[] = "Darko";
array[0] = 'M'; //obichna niza
cout << array << endl; //pechati 'Marko'
char text[100];
cout << "Vnesi eden zbor: ";
cin >> text; //prochitaj eden zbor
cout << text; //go pechati vneseniot zbor
return 0;
}

Што ќе се прикаже по извршување на следната програма 

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{float a[10], suma=0, arsr;
int b=0;
do 
{ cin >>a[b];
  suma=suma+a[b];
  b++;
   arsr=suma/b;
}
while (b<10 && arsr<=10);
for (int i=0; i < b-1;i++)
   for (int j=i+1; j < b;j++)
      if (a[i] > a[j]) swap(a[i],a[j]);
for (int i=0; i < b;i++) cout << a[i] << " ";
cout << endl;
return 0;

 Дадена е низа од 10 реални броја. Да се најде бројот најблизок до 0 и најдалечен од 0

#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a[10]={2, 3, 15, -14, -12.5, -1.5, 0.2, 11, -25, 4}, najb, najd;
najb=a[0];
najd=a[0];
for (int i=1; i<10;i++)
{
if (abs(a[i])< abs(najb)) najb=a[i];
if (abs(a[i]) > abs(najd)) najd=a[i];
}
cout << "Najblizok do nula e " << najb << endl;
cout << "Najdalecen od nula e " << najd << endl;
return 0;

Збир  на два бинарни броја


No comments: