Informatică, întrebare adresată de teodoramiron1912, 8 ani în urmă

Se dă un vector cu n elemente numere naturale. Să se șteargă din vector toate elementele pare.va rog!!

Răspunsuri la întrebare

Răspuns de andriesboss92
3

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!

Alte întrebări interesante