Statiniai masyvai C++ kalboje  (0)

Programavime praktiškai neįmanoma išsiversti be didelių apdorojamų duomenų srautų - nepriklausomai ar programuojama aukštame, ar žemame lygyje. Ir patogiausia tokius duomenų srautus apdorti panaudojant masyvus - duomenų matricas. Masyvai gali būti statiniai ir dinaminiai. Šiame dokumente supažindinama su statinių vienmačių ir daugiamačių masyvų formavimu C++ kalboje, kai kuriais pagrindiniais darbo su masyvais algoritmais.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Masyvais vadinami vienodo tipo duomenų rinkiniai, kuriuose svarbi elementų tvarka. Elementų tvarka masyvuose nurodoma indeksais, o tokiai tvarkai nurodyti reikalingas indeksų skaičius vadinamas masyvo rangu arba matavimo skaičiumi. Paprasčiausi yra vienmačiai masyvai.

Siekiant supaprastinti masyvų aprašymą ir tvarkymą, C kalbų šeimoje masyvų indeksams nurodomos ne leistinų reikšmių atkarpos, o reikšmių skaičius. Be to, laikoma, kad pradinės indeksų reikšmės yra nuliai.

Vienmačių masyvų aprašymo sakinių sintaksė:

<Elementų tipas> <Masyvo vardas> [<Elementų skaičius>]

Šiame aprašyme skliaustai [] yra būtini struktūros elementai. Atskirus masyvo elementus žymi kintamieji su indeksais. Jų vardų sintaksė:

<Masyvo vardas>[<Indeksas>]

Indeksai gali būti tik atkarpos [0,n-1] sveikieji skaičiai (n – masyvo elementų skaičius). Aprašymo pavyzdys: 

int a[100];       //sukuriamas 100 int tipo skaiciu masyvas
float b[1050]; //sukuriamas 1050 float skaiciu masyvas

 Aprašant masyvus, galima kartu apibrėžti jo elementų pradines reikšmes. Šiam tikslui naudojama tokia struktūra:

<Tipas><Vardas>[]={<Reikšmių sąrašas>};

Masyvo su apibrėžtomis pradinėmis reikšmėmis aprašymo pavyzdys:

 int a[]={1, 2, 3, 4, 5};      //sukuriamas 5 skaiciu masyvas

 Daugiamačiai masyvai apibrėžiami kaip masyvų masyvai. Jų nariai atmintyje saugomi taip, kad visi masyvo fragmentai, kurie gaunami fiksuojant dalies pirmųjų indeksų reikšmes ir perrenkant visas likusių elementų reikšmes, sudarytų vientisus laukus. Pavyzdžiui, dvimačiuose masyvuose tokie laukai yra jų eilutės. Dvimačių masyvų aprašymo pavyzdys:

 int x[10][50];    //10 eiluciu ir 50 stulpeliu masyvas

 Indeksų reikšmių skaičių galima nurodyti tiek paprastomis, tiek vardinėmis konstantomis. Kintamuosius šiuo tikslu vartoti draudžiama. Jei masyvo dydis iš pradžių nežinomas ir jis bus nulemtas programos vartotojo arba skaičiavimų rezultatų, tuomet tenka naudoti dinaminius masyvus.

Sukūrus masyvą, bet nepriskyrus jam konkrečių reikšmių, kiekvienoje ląstelėje nebūtinai bus įrašomas nulis. Joje gali atsirasti bet koks skaičius, tuo metu buvęs lastelei suteikto adreso zonoje. Todėl norint turėti tuščią nulinį masyvą, būtina į jo visas ląsteles programiškai įrašyti nulius.

1 programa. Ciklo skaitliuko įrašymas į vienmatį masyvą:

#include <iostream.h>
main(){
int mas[100];
int k;
for (int i=0;i<=101;i++)
 {
 mas[i]=i;   //irasomas i masyva ciklo skaitliukas
 }
for (int i=0;i<=101;i++)
 {
 cout<<"mas["<<i<<"]="<<mas[i]<<endl;
 }
cout << "noredami baigti iveskite bet koki skaiciu" <<'\n';
cin >> k;
}

 2 pavyzdys. Dvimačio masyvo formavimas.

#include <iostream.h>
main(){
int mas[10][5];
char k;
//dvimacio masyvo reiksmiu generavimas
for (int i=0;i<10;i++)
 {
 for (int j=0;j<5;j++)
     {
     mas[i][j]=i*j; //masyvas uzpildomas skaitliuku sandauga
     }
 }
//dvimacio masyvo reiksmiu isvedimas i ekrana
for (int i=0;i<10;i++)
 {
 for (int j=0;j<5;j++)
     {
    cout <<"mas["<<i<<"]["<<j<<"]="<<mas[i][j]<<endl;
     }
 } 
do
{
cout << "noredami baigti iveskite raide 'q'" <<'\n';
cin >> k;
}
while (k!=113);
}
 

3 pavyzdys. Vienmačio masyvo rikiavimas didėjimo tvarka.

#include <iostream.h> 
main(){
int mas[10], temp;
char k;
//dvimacio masyvo reiksmiu generavimas
cout <<"Iveskite ne vienodo dydzio 10 skaiciu"<<endl;
for (int i=0;i<10;i++)
{
cin >>mas[i];
}

cout <<"Ivestas nesurikiuotas masyvas"<<endl;
for (int i=0;i<10;i++)
{
cout <<"mas["<<i<<"]="<<mas[i]<<'\n';
}
//masyvo rikiavimas
for (int i=0;i<10;i++)
{
for (int j=0;j<9-i;j++)
{
if (mas[j]>mas[j+1])
{
temp=mas[j+1]; //padaroma lasteles kopija
mas[j+1]=mas[j]; //perrasoma didesne lastele
mas[j]=temp; //perkeliama mazesne lastele
}
}
}

cout <<"Ivestas didejimo tvarka surikiuotas masyvas"<<endl;
for (int i=0;i<10;i++)
{
cout <<"mas["<<i<<"]="<<mas[i]<<'\n';
}

do
{
cout << "noredami baigti iveskite raide 'q'" <<'\n';
cin >> k;
}
while (k!=113);
}
Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(8)
(1)
(6)

Komentarai (0)

Susijusios žymos: