IZBACIVANJE ELEMENATA NIZA - REŠENJE
Izbacivanje elemenata niza- rešenje
Oblast: nizovi, transformisanje nizova
#include <iostream>
using namespace std;
int main()
{
int n, z=0, m, j;
bool ima=false;
cin>>n;
int a[n], b[n];
/* Učitavanje niza*/
for(int i = 0; i < n; i++)
{
cin>>a[ i ];
}
m=n;
j=0;
do
{
ima=false;
for(int i=0; i<m; i++)
{
/* Ako su elementi niza delioci ne prepisujuse u niz b*/
if(m%a[i]==0)
{
ima=true;
continue; // preskace ciklus, kod ispod se ne izvršava za tekući ciklus, nego se prelazi u sledeći
}
else
{
b[j++]=a[ i ];
// cout<<b[j-1]<<" ";
}
}
m=j;
/* ponovo prepisuje elemente niza b u niz a, priprema za sledeći ciklus*/
for(int i=0; i<m; i++){
a[ i ]=b[ i ];
}
j=0;
}
while(ima);
// cout<<m<<endl;
//Sabira elemente niza b
for(int i=0; i<m; i++)
{
z=z+b[i];
// cout<<b[i]<<endl;
}
cout<<z<<endl;
return 0;
}
using namespace std;
int main()
{
int n, z=0, m, j;
bool ima=false;
cin>>n;
int a[n], b[n];
/* Učitavanje niza*/
for(int i = 0; i < n; i++)
{
cin>>a[ i ];
}
m=n;
j=0;
do
{
ima=false;
for(int i=0; i<m; i++)
{
/* Ako su elementi niza delioci ne prepisujuse u niz b*/
if(m%a[i]==0)
{
ima=true;
continue; // preskace ciklus, kod ispod se ne izvršava za tekući ciklus, nego se prelazi u sledeći
}
else
{
b[j++]=a[ i ];
// cout<<b[j-1]<<" ";
}
}
m=j;
/* ponovo prepisuje elemente niza b u niz a, priprema za sledeći ciklus*/
for(int i=0; i<m; i++){
a[ i ]=b[ i ];
}
j=0;
}
while(ima);
// cout<<m<<endl;
//Sabira elemente niza b
for(int i=0; i<m; i++)
{
z=z+b[i];
// cout<<b[i]<<endl;
}
cout<<z<<endl;
return 0;
}
Objašnjenje koda
Cilj ovog programa je da iz niza celih brojeva ukloni "nepoželjne" elemente koji dele dužinu niza, dok ne ostanu samo elementi koji nisu delioci tekuće dužine niza. Na kraju, program izračunava zbir preostalih elemenata.
- Definisanje promenljivih:
- n je početna dužina niza.
- z je promenljiva koja će sadržati zbir preostalih elemenata.
- m je trenutna dužina niza tokom svakog ciklusa provere.
- j je brojač za prepisivanje preostalih elemenata iz jednog niza u drugi.
- ima je logička promenljiva koja označava da li su pronađeni nepoželjni elementi u trenutnom ciklusu.
- Učitavanje niza:
- Korisnik unosi dužinu niza n, a zatim elemente niza a.
- Izbacivanje nepoželjnih elemenata:
- U do-while petlji, program prolazi kroz sve elemente niza a i proverava da li je trenutni element delilac trenutne dužine niza m.
- Ako je element delilac, on se ne prepisuje u novi niz b i ima postaje true, što označava da postoje elementi koji treba izbaciti.
- Niz b sadrži samo preostale elemente koji nisu delioci m.
- Zatim se niz b prepisuje nazad u niz a, i proces se ponavlja sve dok više nema nepoželjnih elemenata.
- Sabiranje preostalih elemenata:
- Nakon što su svi nepoželjni elementi uklonjeni, preostali elementi se sabiraju i rezultat se ispisuje.
- Program koristi dvostruku petlju za uklanjanje elemenata i prepisivanje niza.
- Uklanja se svaki element koji deli trenutnu dužinu niza.
- Proces se ponavlja dok svi preostali elementi ne postanu "poželjni", tj. ne dele dužinu preostalog niza.