Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n, i, v[100];
cout << "n = ";
cin >> n;
for( i = 1 ; i <= n; i++ )
{
cout<<"v [ "<<i<<" ] = ";
cin>>v[i];
}
for( i = 1 ; i <= n; i++ )
{
if ( v[i] % 2 == 0 )
{
for(int j = i+1; j <= n; j++)
v[j-1] = v[j];
i--;
n--;
}
}
for(i = 1; i <= n ; i++ )
cout<<v[i]<<" ";
}
Explicație:
Citești cele n elemente ale vectorului.
Parcurgi vectorul cu un for in care verifici daca elementul de pe pozitia i este par. Daca este par vei muta restul elementelor de la pozitia i+1 cu o pozitie in minus.
Ca sa intelegi ce inseamna asta urmărește exemplul următor:
n = 5
elem. vectorului: 2 4 3 5 8
pt i = 1, v[1] = 2, este par. Copiem peste pozitia 1 restul elementelor dupa care reluam de unde am ramas, scazand pozitia. Noi trebuie sa verificam daca exista 2 numere pare consecutive pentru a le putea elimina, de aceea facem i--;
n--; este scris deoarece odata cu stergerea unui element par din vector, numarul de elemente scade de fiecare data cu o unitate.
Daca nu am fi pus i--;, iar elementele vectorului erau 2 4 3 5 8
ar fi fost astfel:
i = 1: 2 - par, copiez peste el
v[] = 4 3 5 8
i = 2: 3 impar
i = 3: 5 impar
i = 4: 8 - par, copiez peste el
vectorul v[] va fi = 4 3 5 ... ceea ce este incorect deoarece 4 este un numar par.
Sper ca ai inteles. Daca ai nelamuriri astept in sectiunea de comentarii.
Succes!