Sa se scrie un program care citeste de la tastatura un vector cu n elemente numere intregi.
a) sa se afiseze vectorul astfel incat numerele sa fie ordonate crescator
b) sa se afiseze vectorul astfel incat numerele pare sa ocupe primele pozitii, iar cele impare ultimele pozitii
c) sa se afiseze vectorul astfel incat numerele pare sa ocupe pozitia impara, iar cele impare sa ocupe pozitia para. (daca sunt mai multe numere pare sau impare acestea se adauga la final)
(Exemplu: 26789351 -> 27698351) – numerotarea incepe de la pozitia 1
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, x, p; //n = n elemente, x = numere intregi, p = folosit pentru a schimba
//cifrele din lista intre ele
vector<int> lista1;
vector<int> lista2;
vector<int> lista3;
cout << "N: ";
cin >> n;
//ca sa pot incepe indexarea de la 1, adaug un 0 pe prima pozitie
//a fiecarei liste
lista1.push_back(0);
lista2.push_back(0);
lista3.push_back(0);
//populez listele
for(int i=0; i<n; i++)
{
cout << "=> ";
cin >> x;
lista1.push_back(x);
lista2.push_back(x);
lista3.push_back(x);
}
//ordonat crescator
for(int o=0; o<=n; o++)
{
for(int i=2; i<=n; i++)
{
if(lista1[i] < lista1[i-1])
{
p = lista1[i];
lista1[i] = lista1[i-1];
lista1[i-1] = p;
}
}
}
//pare inceput, impare final
for(int o=0; o<=n; o++)
{
for(int i=2; i<=n; i++)
{
if((lista2[i] % 2 == 0) && (lista2[i-1] % 2 > 0))
{
p = lista2[i];
lista2[i] = lista2[i-1];
lista2[i-1] = p;
}
}
}
//nr par = poz impara / nr impar = poz para
for(int i=1; i<=n; i++)
{
for(int j=i; j<=n; j++)
{
if((lista3[i] % 2 == 0) && (i % 2 == 0))
{
if(lista3[j] % 2 > 0)
{
p = lista3[i];
lista3[i] = lista3[j];
lista3[j] = p;
}
}
else if((lista3[i] % 2 > 0) && (i % 2 > 0))
{
if(lista3[j] % 2 == 0)
{
p = lista3[i];
lista3[i] = lista3[j];
lista3[j] = p;
}
}
}
}
//afiseaza rezultatul
cout << "1) ";
for(int i=1; i<=n; i++)
{
cout << lista1[i] << " ";
}
cout << endl;
cout << "2) ";
for(int i=1; i<=n; i++)
{
cout << lista2[i] << " ";
}
cout << endl;
cout << "3) ";
for(int i=1; i<=n; i++)
{
cout << lista3[i] << " ";
}
cout << endl;
return(0);
}
Explicație:
Am lasat comentarii.