Низи-едноиндексни полиња
Што е низа во програмските јазици?
- Низите се структурирани податочни типови
- колекција од повеќе индивидуални елементи со заедничко име
- овозможуваат пристап до индивидуалните елементи во низата
За да се организираат повеќе податоци од ист тип, може да се креираат повеќе променливи и на секој податок му се доделува промелива. Но тоа е фукционално само ако се оперира со ограничен број променливи.
На пример, со програмскиот сегмент се собираат вредностите на три податока
int prom1, prom2, prom3;
int suma;scanf(“%d%d%d”,&prom1,&prom2,&prom3);
suma = prom1 + prom2 + prom3;
Но ако е потребнo да оперираме со многу повеќе променливи од исти тип (на пр. 100, 1000, ...), потребен е поинаков приод. За таа цел се формира низа од повеќе променливи од ист тип.
Низа е структура со релациски поврзани податоци, при што
- бројот на елементи е однапред познат
- сите елементи се променливи од ист тип
Дефиниција:
Низа е колекција од променливи од ист тип сместени во низа последователни мемориски локации, на кои им е доделено единствено име.Низите уште се нарекуваат едноиндексни или еднодимензионални полиња.
За пристап до кој и да е елемент од полето се користи името и позицијата на елементот во полето, а позицијата се одредува со индекс.
Според бројот на индекси полињата се делат на
- едноиндексни (полиња),
- двоиндексни (матрици), итн..
Декларирање на едноиндексно поле
Секогаш кога во програма се користи поле, на почетокот од програмата тоа се декларира. За негово декларирање потребно е неговото име, типот на елементите (променливите) и бројот на елементи во полето.
Формат на наредбата за декларирање е
tip ImePole[BrojNaElementi];
Примери за декларирање на поле:
int c[10]; float moePole[3284]; double Tez[100]; int b[100], x[27];
Пример 1.
Да се дефинира едноиндексно поле temps што содржи 5 реални вредности.
Со наредбата
float temps[5];
се декларира поле temps со пет реални вредности, а тоа значи резервирање мемориски простор
Иницијализација на едноиндексно поле
Во наребата за декларација може да се иницијализираат и елементите на полето како што е наведено со следните две наредби:
int p[10] ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, n[5]= {1, 2, 3, 4, 5 };
float broevi[4]= {1.0, 0.3, 2.25, 4.5};
Ако не се внесат доволно вредности за сите елементи од полето, најдесните елементи се иницијализираат на 0 како на пример:
int a[5] = {0,1,3}; /* preostanatite elementi se 0 */int b[10]={0}; /*najednostaven nacin za inicijalizacija na site vrednosti na 0 */int c[80] = {95}; /* prviot element ima vrednost 95, a site ostanati 0 */
Ако не е определена големината на полето, тогаш истата ја определува компјутерот
int n[] = { 1, 2, 3, 4, 5 }; - 5 почетни вредности, согласно полето ќе биде декларирано како поле со 5 елемента
int pogodi[] = {1,3,5,7,11,13}; - поле со 6 елементи
int golemina[] = {3, 1, 5, 99, 18, -1}; - поле со 6 елементи
Пристап до елемент на едноиндексно поле
За да се добие или промени елемент од полето, потребно е да се определи име на полето и позицијата на елементот во полето. Форматот на елемент од полето е
imePole[IndeksPozicija]
Поле со n елементи и име alfa е:
alfa[0], alfa[1]...alfa[n-1]
- првиот елемент се наоѓа на позиција (има индекс) 0, вториот на позиција (има индекс) 1, итн.
- индекс на поле може да биде само целобројна вредност
- одговорност на програмерот е да обезбеди индексот да биде во интервалот [0,n-1]
Поле може да се иницијализира и со следната низа наредби:
int i, n[10];for (i=0; i<10; i++) n[i] = i;
Пример 2.
Програмски сегмент за собирање на вредностите на елементите на две полиња и нивно сместување во трето поле:
for(i=0; i<n; i++)
c[i]=a[i]+b[i];
Пример 3.
Операторот што го одредува индексот има најголем приоритет, поради што во следниот израз
a[2]++
компјутерот ќе ја зголеми вредноста на променливата што се наоѓа на третата позиција во полето за 1.
Пример 4.
Да се најде минимален елемент во низа.
Програма:
#include<stdio.h>int main()
{int min, i, pole[20];for(i = 0; i<20; i++)
{printf(“Vnesete element %d:i”, i);
scanf(“%d”,&pole[i]);}
min = pole[0];
for(i = 0; i<20; i++)
{if (pole[i]<min) min = pole[i];}printf(“Minimalen e elementot %d ”, min);
return 0;}
Пример 5.
Да се изброи колку елементи од една низа припаѓаат на даден интервал.
Програма:
#include<stdio.h>int main()
{int pocetok, kraj, i, pole[50], brojac = 0;printf (“Vnesi vrednoti za pocetok i kraj na intervalot”);
scanf (“%d %d”,&pocetok,&kraj);for(i = 0; i<50; i++)
{printf(“Vnesete element %d:i”, i);
scanf(“%d”,&pole[i]);}
for(i = 0; i<50; i++)
{if (pole[i]>pocetok&&pole[i]<kraj) brojac++;
}printf(“Vkupno elementi vo intervalot ima %d ”, brojac);return 0;
}