# Vienmačiai masyvai: keitimas (reikšmių įterpimas, šalinimas, ...)
# Vaizdo pamoka
# Pavyzdžiai
# Pavyzdys 1
Skaičių, kurie atitinka tam tikrą sąlygą, keitimas kitais.
Kodas:
#include <iostream>
using namespace std;
int main()
{
// Pradiniai duomenys
int skaiciai[] = { 8, 9, 8, 5, 3, 5, 4, 2, 3 };
int kiekis = 9;
// Ėjimas per pradinius duomenis
for (int i = 0; i < kiekis; i++)
{
// Ar skaičius tenkina sąlygą?
if (skaiciai[i] % 2 == 0)
{
// Skaičiaus keitimas kitu
skaiciai[i] = 0;
}
}
// Atnaujintų duomenų išvedimas
for (int i = 0; i < kiekis; i++)
{
cout << skaiciai[i] << " ";
}
return 0;
}
Rezultatai:
0 9 0 5 3 5 0 0 3
# Pavyzdys 2
Naujo skaičiaus įterpimas nurodytoje vietoje.
Kodas:
#include <iostream>
using namespace std;
int main()
{
// Pradiniai duomenys
int skaiciai[10] = { 4, 5, 6, 7 };
int kiek = 4;
// Pradinių duomenų išvedimas
cout << "Pradiniai duomenys: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
// Turėsim vienu elementu masyve daugiau, todėl padidinam kiekį vienu
kiek++;
// Kur įterpti naują elementą ir kokį elementą įterpti
int kelintoj_vietoj = 2;
int naujas_skaicius = 30;
// Visų elementų iki nurodyto pastūmimas vienu atgal
for (int i = kiek - 1; i > kelintoj_vietoj - 1; i--)
{
skaiciai[i + 1] = skaiciai[i];
}
// Naujo elemento įterpimas į nurodytą vietą
skaiciai[kelintoj_vietoj] = naujas_skaicius;
// Atnaujinto masyvo išvedimas
cout << "\nSu iterptu skaiciumi: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
return 0;
}
Rezultatai:
Pradiniai duomenys: 4 5 6 7
Su iterptu skaiciumi: 4 5 30 6 7
# Pavyzdys 3
Dviejų narių sukeitimas vietomis (šiuo atveju: didžiausio ir mažiausių skaičių).
Kodas:
#include <iostream>
using namespace std;
int main()
{
// Pradiniai duomenys
int skaiciai[] = { 5, 8, 2, 3, 1, 4 };
int kiek = 6;
// Pradinių duomenų išvedimas
cout << "Pradiniai duomenys: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
// Kintamieji ieškomų didž. ir maž. skaičių indeksų saugojimui
int didziausio_indeksas = 0,
maziausio_indeksas = 0;
// Ėjimas per pradinius duomenys
for (int i = 0; i < kiek; i++)
{
// Ar skaičius didesnis už didžiausią?
if (skaiciai[i] > skaiciai[didziausio_indeksas])
{
// Įsimenamas naujas didžiausio skaičiaus indeksas
didziausio_indeksas = i;
}
// Ar skaičius mažesnis už mažiausią?
if (skaiciai[i] < skaiciai[maziausio_indeksas])
{
// Įsimenamas naujas mažiausio skaičiaus indeksas
maziausio_indeksas = i;
}
}
// Dviejų skaičių apkeitimas vietomis
int laikinas = skaiciai[didziausio_indeksas];
skaiciai[didziausio_indeksas] = skaiciai[maziausio_indeksas];
skaiciai[maziausio_indeksas] = laikinas;
// arba:
// swap(skaiciai[didziausio_indeksas], skaiciai[maziausio_indeksas]);
// Atnaujinto masyvo išvedimas
cout << "\nApkeisti skaiciai: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
return 0;
}
Rezultatai:
Pradiniai duomenys: 5 8 2 3 1 4
Apkeisti skaiciai: 5 1 2 3 8 4
# Pavyzdys 4
Elemento šalinimas žinant to elemento indeksą.
Kodas:
#include <iostream>
using namespace std;
int main()
{
// Pradiniai duomenys
int skaiciai[] = { 8, 5, 6, 5, 4, 2 };
int kiek = 6;
// Skaičiaus, kuris bus šalinamas, indeksas
int kuri_salinti_ind = 2;
// Pradinių duomenų išvedimas
cout << "Skaiciai: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
// Skaičiai perkeliami vienu į priekį iki šalinamo
for (int i = kuri_salinti_ind; i < kiek - 1; i++)
{
skaiciai[i] = skaiciai[i + 1];
}
// Kiekis mažinamas vienu
kiek--;
// Atnaujinto masyvo išvedimas
cout << "\nPasalinta: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
return 0;
}
Rezultatai:
Skaiciai: 8 5 6 5 4 2
Pasalinta: 8 5 5 4 2
# Pavyzdys 5
Visų elementų šalinimas, kurie atitinka tam tikrą sąlygą.
Kodas:
#include <iostream>
using namespace std;
int main()
{
// Pradiniai duomenys
int skaiciai[] = { 8, 5, 6, 5, 4, 2 };
int kiek = 6;
// Kokį skaičių reikės šalinti (įskaitant visus jo atsikartojimus)
int kuri_salinti = 5;
// Išvedami pradiniai duomenys
cout << "Skaiciai: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
// Einama per visus masyvo elementus
for (int i = 0; i < kiek; i++)
{
// Jei skaičius sutampa su norimu pašalinti
if (skaiciai[i] == kuri_salinti)
{
// Šalinimas skaičius iš masyvo
for (int j = i; j < kiek - 1; j++)
{
skaiciai[j] = skaiciai[j + 1];
}
// Masyve esančių elementų kiekis mažinamas vienu
kiek--;
// Grįžtama pirmame cikle vienu atgal, kad vėl tikrintų toje pačioje
// vietoje esantį skaičių, nes jeigu negrįš ir iš eilės bus du tokie
// elementai, kurie atitiktų sąlygą - tai antrasis nebūtų pašalintas
i--;
}
}
// Išvedamas atnaujintas masyvas
cout << "\nPasalinta: ";
for (int i = 0; i < kiek; i++)
{
cout << skaiciai[i] << " ";
}
return 0;
}
Rezultatai:
Skaiciai: 8 5 6 5 4 2
Pasalinta: 8 6 4 2
# Užduotys
# Užduotis 1
- Susikurkite skaičių masyvą.
- Kiekvieną nelyginį skaičių pakelkite vienu. Pavyzdžiui, jeigu turite
skaiciai = { 7, 4, 5, 6 }
tai jis turėtų pasiversti įskaiciai = { 8, 4, 6, 6 }
.
# Užduotis 2
- Susikurkite masyvą žodžiams saugoti.
- Kiekvieną žodį, kuris yra ilgesnis nei 5 simboliai pakeisti į tuščią
string
. Pavyzdžiui:"dviratis"
taps""
.
# Užduotis 3
- Susikurkite skaičių masyvą.
- Raskite mažiausio ir didžiausio skaičių indeksus / pozicijas masyve.
- Po mažiausio skaičiaus įterpkite šių dviejų rastų skaičių sumą. Pavyzdžiui, jeigu turite masyvą
skaiciai = { 7, 2, 4, 9, 3 }
, kuriame didžiausias skaičius yra9
, o mažiausias yra2
, tai masyve už skaičiaus2
reikia įterpti skaičių11
, nes2 + 9
, dėl ko bus pakeista:skaiciai = { 7, 2, 11, 4, 9, 3 }
.
# Užduotis 4
- Susikurkite skaičių masyvą.
- Iš šio masyvo pašalinkite pirmą lyginį skaičių.
- Iš šio masyvo pašalinkite didžiausią skaičių.
- Į šį masyvą, į vidurį įterpkite jūsų pasirinktą skaičių.
# Užduotis 5 (sudėtingesnė)
- Susikurkite skaičių masyvą
- Raskite didžiausią masyvo skaičių.
- Didžiausią masyvo skaičių įterpkite po kiekvieno lyginio skaičiaus. Pavyzdžiui, turint
skaiciai = { 7, 4, 9, 2, 3 }
, didžiausias skaičius yra9
, todėl masyvas bus pakeistas:skaiciai = { 7, 4, 9, 9, 2, 9, 3 }
.
# Užduotis 6 (sudėtingesnė)
- Susikurkite žodžių masyvą.
- Iš šio masyvo pašalinkite visus žodžius, ilgesnius nei 5 simboliai.
- Į šį masyvą, pačioje pradžioje, įterpkite bent 2 pasirinktus žodžius.
- Papildomai: programą pakeiskite taip, kad šalinami žodžiai taip pat būtų įrašomi į kitą masyvą. Konsolėje išveskite iš pradinio masyvo pašalintus žodžius.