# Vienmačiai masyvai
# Vaizdo pamoka
# Apie vienmatį masyvą
- Masyve saugoma tik viena eilė susijusių duomenų. Pavyzdžiui, vienas po kito einantys:
- pažymiai;
- vardai;
- automobilių markės;
- ūgiai;
- kiekvienos dienos temperatūros;
- ...
- Viename vienmatyje masyve saugoma tokio paties duomenų tipo informacija (tik
int
, tikstring
, ar pan.). - Kuriant masyvą reikia nurodyti masyvo dydį (kiek maksimaliai elementų bus saugoma jame). Vietoj to galima masyvui iškart priskirti duomenys, dėl ko jo dydis bus paskaičiuojamas automatiškai.
- Sukūrus norimo dydžio masyvą, jo viso užpildyti nebūtina, tačiau geriau jį kurti tokio dydžio, kad kuo labiau būtų išnaudojama visa rezervuota vieta, nes kitu atveju - tai tik atmintyje rezervuota ir nepanaudota vieta.
- Masyvo dydžio pakeisti programos eigoje negalima.
- Masyve esančius duomenis pasiekti ar keisti programos eigoje galima.
# Vienmačio masyvo sintaksė
Tuščias, nurodyto dydžio masyvas:
<tipas> <pavadinimas>[<dydis>];
Masyvas, kūrimo metu užpildytas su nurodytais duomenimis:
<tipas> <pavadinimas>[] = { <duomenys> };
Paaiškinimai:
- tipas - kokio tipo duomenys bus šiame masyve (
int
,string
,char
,float
, ...). - pavadinimas - koks masyvo pavadinimas / vardas, apibūdinantis kokią informaciją jis saugo, kaip jį galima pasiekti programoje.
- dydis - kiek maksimaliai elementų bus saugoma jame, pavyzdžiui, dešimt pažymių.
- duomenys - reikšmės duomenų, kurios įrašomos masyvo kūrimo metu.
# Masyvo narių indeksavimas
# Pavyzdys 1
Duomenys ir jų indeksai:
Reikšmė: | 5 | 8 | 9 | 2 | -1 | 7 | -2 | 4 |
---|---|---|---|---|---|---|---|---|
Indeksas: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Aprašymas per kodą:
int skaiciai[] = { 5, 8, 9, 2, -1, 7, -2, 4 };
# Pavyzdys 2
Duomenys ir jų indeksai:
Reikšmė: | Gluosnis | Ažuolas | Liepa | Berželis | Obelis |
---|---|---|---|---|---|
Indeksas: | 0 | 1 | 2 | 3 | 4 |
Aprašymas per kodą:
string medziai[] =
{
"Gluosnis",
"Azuolas",
"Liepa",
"Berzelis",
"Obelis"
};
# Pavyzdys 3
Duomenys ir jų indeksai:
Reikšmė: | 7.5 | 8 | 4.5 | 9.8 | 7.6 |
---|---|---|---|---|---|
Indeksas: | 0 | 1 | 2 | 3 | 4 |
Aprašymas per kodą:
double pazymiai[] = { 7.5, 8, 4.5, 9.8, 7.6 };
Papildoma informacija apie tai kodėl masyvai pradedami numeruoti nuliu:
# Duomenų pasiekimas per indeksą
Reikšmės pasiekimas (išspausdinimas):
cout << pavadinimas[indeksas];
Reikšmės pakeitimas:
pavadinimas[indeksas] = nauja_reiksme;
# Pasitikrinkite: koks indeksas, kokia reikšmė?
Reikšmė: | 5 | 8 | 9 | 2 | -1 | 7 | -2 | 4 |
---|---|---|---|---|---|---|---|---|
Indeksas: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
skaiciai[???] = 5;
skaiciai[3] = ???;
skaiciai[6] = ???;
skaiciai[???] = 8;
skaiciai[???] = 7;
skaiciai[4] = ???;
skaiciai[???] = 9;
skaiciai[???] = 4;
# Masyvo dydis ir elementų kiekis
- Masyvo dydis ir masyve esantis elementų kiekis nėra vienas ir tas pats.
- Masyvas gali būti ir didesnis nei į jį yra įvesta informacijos.
- C++ kalboje nėra automatinio
length
arcount
sekimo, kuris nurodytų kiek elementų yra nurodytame masyve, todėl tai reikės daryti patiems.
Tarkime, sukuriame pažymių masyvą, kurio dydis yra 10 elementų:
int pazymiai[10];
Į šį masyvą įrašome 5 pažymius:
pazymiai[0] = 8;
pazymiai[1] = 9;
pazymiai[2] = 7;
pazymiai[3] = 10;
pazymiai[4] = 8;
Todėl dirbant su šio masyvo duomenimis mums reikės kažkaip žinoti, kiek duomenų jame iš tikrųjų yra. Tam tikslui galime įsivesti int
tipo kintamąjį, kuris saugotų šį kiekį:
int pazymiu_kiekis = 5;
Šis masyvas atmintyje atrodytų kažkaip panašiai:
Reikšmė: | 8 | 9 | 7 | 10 | 8 | - | - | - | - | - |
---|---|---|---|---|---|---|---|---|---|---|
Indeksas: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |