Se da un vector v cu n elemente. Construiti un vector GATA ORDONAT (crescator) cu elementele pare din primul vector.
AJUTOR! Nu se accepta sa ordonez eu vectorul initial si apoi sa pun in noul vector numerele pare, iar altfel chiar nu stiu cum sa construiesc un vector gata ordonat... VA ROG MULT!!! DAU MULTE PUNCTE!!!!!!
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n,i, v[100], minpar, poz, k=0, vp[100], gasit=0;
cin >> n;
for (i=0; i<n; i++) cin >> v[i];
int terminat=0, ind=0;
while (!terminat)
{
i=ind;
while (i<n && v[i]%2==1) ++i;
if (i==n) { terminat=1; }
else
{
ind=i; terminat=0;
minpar=v[i]; poz=i; gasit=1;
for (int j=ind; j<n; j++)
{
if (v[j]%2==0 && v[j]<minpar) {minpar=v[j]; poz=j; }
}
v[poz]=1; vp[k++]=minpar;
}
}
if (!gasit) cout << "nu are pare";
else
{
cout << "parele ordonate crescator: " << endl;
for (i=0; i<k; i++)
cout << vp[i] << " ";
}
return 0;
}
Explicație:
sper să fie înţeles. Prin ind memorizez primul par din şir. Actualizez pe parmin cu primul par. La o parcurgere a vectorului v, găsesc parmin şi poziţia lui. La finalul parcurgerii, memorizez parmin în vectorul cu pare, elementul care a fost cel mai mic par îi dau 1, pentru nu a fi cercetat repetat.
Repet iară căutarea primului par dar nu de la 0, ci de la ind memorizat anterior. Dacă apar întrebări... le dai... succese în cercetare!
Evident vectorul iniţial se modifică, dar cred asta nu importă.