IZBACIVANJE ELEMENATA NIZA - UPUTSTVO
Oblast: nizovi, transformisanje nizova
Učitati niz celih brojeva od n elemenata.
Kroz do-while petlju ponavljati postupak uklanjanja nepoželjnih elemenata iz trenutne kopije niza dobijene posle uklonjenih elemenata u prethodnim iteracijama,
Kao uslov za ponavljanje može biti logička promenljiva koja se pre svake ove iteracije postavi na false. Ako se u postupka uklanjanja ne ukloni ni jedan element onda će logička promenljiva ostati false, u suprotnom, ako se ukloni bar 1 element onda bi se ona postavila na true.
Postupak u jednoj iteraciji ove do petlje, gde se nepoželjni element uklanja:
kroz for petlju se uzme tekući element niza a[i] i proverava da li je taj element delioca broja elemenata niza m.
Ako jeste deljiv, konstatuje se da ima elemenata za uklanjanje i preskoči tekuca iteracija for ciklusa.
Ako nije deljiv onda je taj element poželjan i prepisuje se u drugi niz b.
if(m % a[ i ] == 0)
{
ima=true;
continue;
}
else
{
b[j++]=a[ i ];
// cout<<b[j-1]<<" ";
}
Posle prolaska i ispitivanja svih elemenata niza a u nizu b će biti samo poželjni elementi. Npr.
int a[10]={ 2,3,4,5,6,7,8,9,10};
posto je m=9(broj elemenata) u ovom nizu, nepoželjni clanovi su 3 i 9 jer su oni delioci broja 9. Niz b bi bio sastavljen od brojeva:
2,4,5,6,7,8
Pošto je bilo nepoželjnih ide se u sledeću iteraciju u do petlji. Sada je m=7, a niz a za sledeću iteraciju bi trebao biti ono sto je u tekućoj iteraciji niz b.
Pre sledece iteracije bi trebalo prepisati niz b u niz a:
for(int i=0;i<m;i++){
a[i]=b[i];
}
U drugoj iteraciji do petlje se uklanja samo 7, pa je niz a posle kraja ciklusa(posle prepisivanja niza b ponovo u niz a):
2,4,5,6,8
Posle 3. iteracije m=5, a uklanja se element 5:
2,4,6,8
Posle 4. iteracije m=4, a uklanja se element 2 i 4:
6,8
sada je m=2.
Od ovih elemenata nijedan nije delilac broja 2 i sada se završava spoljašnja do petlja
Kroz do-while petlju ponavljati postupak uklanjanja nepoželjnih elemenata iz trenutne kopije niza dobijene posle uklonjenih elemenata u prethodnim iteracijama,
Kao uslov za ponavljanje može biti logička promenljiva koja se pre svake ove iteracije postavi na false. Ako se u postupka uklanjanja ne ukloni ni jedan element onda će logička promenljiva ostati false, u suprotnom, ako se ukloni bar 1 element onda bi se ona postavila na true.
Postupak u jednoj iteraciji ove do petlje, gde se nepoželjni element uklanja:
kroz for petlju se uzme tekući element niza a[i] i proverava da li je taj element delioca broja elemenata niza m.
Ako jeste deljiv, konstatuje se da ima elemenata za uklanjanje i preskoči tekuca iteracija for ciklusa.
Ako nije deljiv onda je taj element poželjan i prepisuje se u drugi niz b.
if(m % a[ i ] == 0)
{
ima=true;
continue;
}
else
{
b[j++]=a[ i ];
// cout<<b[j-1]<<" ";
}
Posle prolaska i ispitivanja svih elemenata niza a u nizu b će biti samo poželjni elementi. Npr.
int a[10]={ 2,3,4,5,6,7,8,9,10};
posto je m=9(broj elemenata) u ovom nizu, nepoželjni clanovi su 3 i 9 jer su oni delioci broja 9. Niz b bi bio sastavljen od brojeva:
2,4,5,6,7,8
Pošto je bilo nepoželjnih ide se u sledeću iteraciju u do petlji. Sada je m=7, a niz a za sledeću iteraciju bi trebao biti ono sto je u tekućoj iteraciji niz b.
Pre sledece iteracije bi trebalo prepisati niz b u niz a:
for(int i=0;i<m;i++){
a[i]=b[i];
}
U drugoj iteraciji do petlje se uklanja samo 7, pa je niz a posle kraja ciklusa(posle prepisivanja niza b ponovo u niz a):
2,4,5,6,8
Posle 3. iteracije m=5, a uklanja se element 5:
2,4,6,8
Posle 4. iteracije m=4, a uklanja se element 2 i 4:
6,8
sada je m=2.
Od ovih elemenata nijedan nije delilac broja 2 i sada se završava spoljašnja do petlja